Utility for running commands inside Netlify Build. Currently, there is just one utility, run
, which is a thin wrapper
over execa
defaulting to { preferLocal: true, stdio: 'inherit' }
.
Examples
const exampleNetlifyPlugin = {
async onBuild({ utils: { run } }) {
await run('eslint', ['src/', 'test/'])
},
}
const exampleNetlifyPlugin = {
async onBuild({ utils: { run } }) {
await run.command('eslint src/ test/')
},
}
const exampleNetlifyPlugin = {
async onBuild({ utils: { run } }) {
const { stdout, stderr, exitCode } = await run('eslint', ['src/', 'test/'])
console.log({ stdout, stderr, exitCode })
},
}
const exampleNetlifyPlugin = {
onBuild({ utils: { run } }) {
const { stdout } = run('eslint', ['src/', 'test/'])
stdout.pipe(fs.createWriteStream('stdout.txt'))
},
}
const exampleNetlifyPlugin = {
async onBuild({ utils: { run } }) {
try {
await run('eslint', ['does_not_exist'])
} catch (error) {
console.error(error)
}
},
}
const exampleNetlifyPlugin = {
async onBuild({ utils: { run } }) {
await run('eslint', ['src/', 'test/'], { env: { TEST: 'true' } })
},
}
API
run(file, arguments, options?)
Execute a command/file.
run.command(command, options?)
Same as run()
except both file and arguments are specified in a single command
string.
For example, run('echo', ['netlify'])
is the same as run.command('echo netlify')
.
If the file or an argument contains spaces, they must be escaped with backslashes. This matters especially if command
is not a constant but a variable, for example with __dirname
or process.cwd()
. Except for spaces, no
escaping/quoting is needed.