Npm run cmd завершается с ошибкой, когда cmd в командной строке работает
В моем проекте проверки HTTP-статуса:
Если я запустил 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
> [email protected] 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! [email protected] jshint: `jshint .`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the [email protected] 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 .",
},
Что я сделал неправильно?
Ответы
Ответ 1
Не выходите с ненулевым кодом ошибки, если вы действительно не имеете в виду его. За исключением сценариев удаления, это приведет к тому, что действие npm завершится неудачно и, возможно, будет отменено. Если сбой незначительный или только предотвратит некоторые дополнительные функции, тогда лучше просто распечатать предупреждение и выйти успешно.
Из https://www.npmjs.org/doc/misc/npm-scripts.html
Использование:
node_modules/.bin/jshint .; true
Или напишите оболочку, которая вызывает jshint, а затем игнорирует код выхода и успешно завершает код выхода с нулевым значением.