使用npm作为任务运行者/构build工具 – 有一些cli模块出现问题
在阅读这篇文章之后,我试图使用npm作为任务运行者/构build工具:
如何使用npm作为构build工具
当我取得一些成功的时候,我被困在一件事上。 运行命令行全局工具(如JSLINT,JSHINT或ESLINT)时,npm将始终在控制台窗口中显示Exit 1代码:
正如你所看到的,这个命令工作正常,但是npm认为它是一个错误,并显示错误日志信息。 这是正常的和/或有办法closures特定的命令?
附加信息:这是我的package.json config中的脚本块:
“scripts”:{“start”:“node ./src/server/index.js”,“test”:“”,“lint”:“eslint index.js”}
然后从npm cli我键入:
npm run lint
这将执行package.json文件中的脚本,其标签为'lint'
我使用这个:
"scripts": { "start": "node ./src/server/index.js", "lint": "eslint index.js || exit 0" }
问候!
由于存在validation错误,eslint存在退出代码1,这使得npm认为在执行期间出现错误。
如果你使用的是linux,你可以使用这个技巧来总是返回一个退出码0:
"scripts": { "start": "node ./src/server/index.js", "test": "", "lint": "eslint index.js; true" }
NPM脚本的devise目的是这样工作的,所以1或2( 0
以外的任何0
)的退出代码将阻止后期任务运行,与在操作系统上运行的方式相同。
使用--silent
标志是一个选项,但是如果脚本还存在其他问题,可能会成为一个问题,当您的构build开始失败时,如果没有任何毛病/testing错误,您将头撞到墙上。
这里要做的最好的事情就是configuration你的进程,以便在你不需要的情况下不输出错误退出代码。 在这种情况下…你有一些错误,根据你的eslintconfiguration合法popup。 这将导致错误退出代码,并(正确如此)阻止下一个任务运行。 当你使用npm脚本时,这实际上是非常有用的 ,因为当你知道有错误时,你可以防止testing/构build步骤被不必要地运行。
因此,在这种情况下,您需要将.eslintrc
文件添加到您的项目中,并指定一些既能处理linting错误也能处理npm错误的规则。
我已经在下面发布了一个快速示例.eslintrc
文件。 在命令行上运行eslint
时,它会自动检测任何.eslintrc
或.eslintignore
文件,并遵守其configuration。
下面的示例将清理你的linting erros,但请记住,它会改变eslint拾取“trigger”时将抛出的退出代码。 当我将规则更改为0
,意味着它在识别该模式时不会提醒您。
您可以阅读更多关于使用和configuration规则代码的信息 ,或者…查看我创build的使用npm作为构build工具的种子项目,并且包括eslint用法: react-flux-npm-automation
// /path/to/project/.eslintrc { "parser": "babel-eslint", "env":{ "browser":true, "node":true, "es6":true }, "rules": { "strict":0, "quotes":0, "no-unused-vars":0 } }
我find了解决这个问题的方法。 在脚本块中,我使用testing脚本通过–silent标志调用lint的lint命令:
"scripts": { "start": "node ./src/server/index.js", "test": "npm run-script --silent lint", "lint": "eslint index.js"}
然后在命令行中input:
npm run test
现在它的工作没有显示错误日志。