使用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 

现在它的工作没有显示错误日志。