Execute shell commands with Fly
npm install --save-dev fly-shell
Both parameters are optional, but at least one must be present. Additionally, a command
is required
Type: string
The shell command to run. You may also use options.cmd
During execution, any occurrences of $file
or $glob
will be replaced with the the relevant filepath or glob pattern.
Type: object
fly-shell
uses execa as its child_process
wrapper. This means it has the same options as child_process.exec and shares execa
's additional options.
Type: string
Same as command
. You may want to use this if you only want to specify an options
object.
Type: boolean
If the command should use the glob pattern within source()
, you must set this to true
or 1
. See here for example.
You can apply a command to each file of your glob
match.
Instances of $file
will be replaced by the file's path.
exports.default = function * (fly) {
yield fly.source('src/*.js')
.shell('cat $file')
//=> fly-shell: console.log('this is src/a.js')
//=> fly-shell: console.log('this is src/b.js')
//=> fly-shell: console.log('this is src/c.js')
.dist('dist');
}
You can use the current glob within your shell command.
Instances of $file
will be replaced by the glob:
exports.default = function * (fly) {
yield fly.source('src/*.js')
.shell('cat $file', {glob: true})
//=> fly-shell:
//=> console.log('this is src/a.js')
//=> console.log('this is src/b.js')
//=> console.log('this is src/c.js')
.dist('dist');
yield fly.source(['src/*.js', 'src/*.css'])
.shell({
cmd: 'cat $glob',
glob: true
})
//=> fly-shell:
//=> console.log('this is src/a.js')
//=> console.log('this is src/b.js')
//=> console.log('this is src/c.js')
//=> body{margin:0;}header{color:black}
//=> .hero{width:100%;height:400px}
.dist('dist');
}
Of course, command arguments may be passed within your command string.
exports.default = function * (fly) {
yield fly.source('src')
.shell('ls -alh $file')
.dist('dist');
}
MIT © Luke Edwards