使用npm作为任务运行器/构建工具 - 遇到一些cli模块的问题

时间:2015-01-26 23:57:54

标签: javascript node.js npm eslint

在阅读本文后,我正在尝试使用npm作为任务运行/构建工具:

How to use npm as a build tool

虽然我取得了一些成功,但我仍然坚持一件事。运行命令行全局工具(如JSLINT,JSHINT或ESLINT)时,npm将始终在控制台窗口中显示Exit 1代码:

enter image description here

正如您所看到的,该命令工作正常,但是npm将其视为错误并显示错误日志信息。这是正常的和/或是否有办法为特定命令关闭它?

其他信息:这是我的package.json配置中的脚本块:

“scripts”:{     “start”:“node ./src/server/index.js”,     “测试”:“”,     “lint”:“eslint index.js”   }

然后从npm cli我输入:

npm run lint

这将执行package.json文件中的脚本,标签为:'lint'

4 个答案:

答案 0 :(得分:3)

我用这个:

cut -f1,2,5- inputfile

问候!

答案 1 :(得分:2)

由于存在验证错误,因此存在退出代码1的eslint,这使得npm认为在执行期间出现错误。

如果您正在使用linux,则可以使用此技巧始终返回退出代码0:

"scripts": { "start": "node ./src/server/index.js", "test": "", "lint": "eslint index.js; true" }

答案 2 :(得分:2)

NPM脚本旨在按照这种方式工作,因此退出代码1或2(除了0之外的其他任何内容)将阻止后期任务运行,就像它在操作上一样你的操作系统。

使用--silent标志一个选项,但是在脚本存在其他问题的情况下可能成为一个问题,当你的构建时,你最终会撞到墙上在没有任何lint / test错误的情况下开始失败。

此处最好的做法是配置您的流程,以便在您不希望的情况下输出错误退出代码。在这种情况下......你根据你的eslint配置合法地弹出一些错误。这将导致错误退出代码,并且(理所当然地)阻止下一个任务运行。当您使用npm脚本时,这实际上是非常有用的,因为当您知道存在错误时,可以防止测试/构建步骤不必要地运行。

因此,在这种情况下,您希望向项目中添加.eslintrc文件,并指定一些既可以处理掉毛错误又可以处理npm错误的规则。

我已在下面发布了一个快速示例.eslintrc文件。在命令行上运行eslint时,它会自动检测任何.eslintrc.eslintignore个文件,并遵守其配置。

下面的示例将清理您的linting错误,但请记住,它会更改当eslint选择"触发"时将抛出的退出代码。当我将规则更改为0时,这意味着当它识别出该模式时,它不会提醒您。

您可以阅读有关利用和configuring rule codes的更多信息,或者...查看我创建的使用npm作为构建工具的种子项目,并包括使用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
    }
}

答案 3 :(得分:1)

我找到了解决这个问题的方法。在脚本块中,我使用测试脚本使用--silent标志为lint调用npm命令:

"scripts": {
"start": "node ./src/server/index.js",
"test": "npm run-script --silent lint",
"lint": "eslint index.js"}

然后在命令行上我可以输入:

npm run test

现在它正在运行而没有显示错误日志。