我想要一个 NPM 脚本,它可以调用 ESLint 并将其路径传递给以跨平台方式指定为命令行参数的单个文件。
例如,如果我像这样运行脚本:
npm run lint --file=./path/to/some/file.js
,那么我希望它运行命令eslint ./path/to/some/file.js
我快到了,这是我到目前为止在 package.json 中的内容:
"scripts": {
"lint": "node -e \"try { require('child_process').execSync(`eslint ${process.env.npm_config_file}`);} catch { console.log('error!') }\"
}
这是有效的,如果我将路径传递给不包含任何lints的文件,则该命令将成功执行,并且进程结束时没有任何预期的输出,并且如果传递一个does包含lints的文件,然后我在控制台中看到我的
error!
消息。
如果我不将命令包装在 try...catch 中,那么我不会显示列出 lint 的 ESLint 的输出,而是会看到某种 Node 错误,我猜是因为 ESLint 的非 0 退出。
如何在 NPM 脚本中从 ESLint 返回 lint 报告?
答案只是在我的脚本中传递给 catch 块的错误对象的
toString()
属性上调用 stdout
:
"scripts": {
"lint": "node -e \"try { require('child_process').execSync(`eslint ${process.env.npm_config_file}`);} catch(error) { console.log(error.stdout.toString()); }\"",
}
本例中错误的
stdout
属性包含 Buffer