如果我运行node_modules/.bin/jshint .
,我会:
$ node_modules/.bin/jshint .
test/inAdapters_fileAdapter.js: line 73, col 31, Missing semicolon.
1 error
它正确执行并产生预期的输出:1错误。
但是,如果我将该命令添加到package.json并尝试通过npm run
运行它然后它可以工作并产生预期的输出,但也会跟随一堆错误:
$ npm run jshint
> http-status-check@0.0.5 jshint /home/guy/source/http-status-check
> jshint .
test/inAdapters_fileAdapter.js: line 73, col 31, Missing semicolon.
1 error
npm ERR! Linux 3.13.0-24-generic
npm ERR! argv "node" "/home/guy/local/bin/npm" "run" "jshint"
npm ERR! node v0.10.31
npm ERR! npm v2.0.0
npm ERR! code ELIFECYCLE
npm ERR! http-status-check@0.0.5 jshint: `jshint .`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the http-status-check@0.0.5 jshint script.
npm ERR! This is most likely a problem with the http-status-check package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! jshint .
npm ERR! You can get their info via:
npm ERR! npm owner ls http-status-check
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR! /home/guy/source/http-status-check/npm-debug.log
这就是它在package.json中的定义:
"scripts": {
"jshint": "node_modules/.bin/jshint .",
},
我做错了什么?
答案 0 :(得分:14)
除非您的意思是真的,否则不要使用非零错误代码退出。除卸载脚本外,这将导致npm操作失败,并可能会回滚。如果故障很小或只会阻止某些可选功能,那么最好只打印警告并成功退出。
来自https://www.npmjs.org/doc/misc/npm-scripts.html
使用:
node_modules/.bin/jshint .; true
或者编写一个调用jshint的包装器,然后忽略退出代码并成功退出,退出代码为零。