Ответ 1
Используйте опцию npm run --silent
:
$ npm run --silent test
Еще меньше набрав, если вы определяете псевдоним оболочки:
$ alias run='npm run --silent'
$ run test
Когда вы запускаете npm test
, и он терпит неудачу, вы получаете тестовые выходы + одно сообщение об ошибке, например:
npm ERR! Test failed. See above for more details.
Однако я создал пользовательский script, называемый lint
, например:
// package.json
{
// ...
"scripts": {
// ... definition for test ...
"lint": "./node_modules/jsxhint/cli.js src/",
}
}
Хорошо, достаточно просто. Но когда вы запускаете npm run lint
, и это терпит неудачу, вместо приятной поисковой ошибки для npm test
вы получаете сообщение об ошибке после вывода linter:
npm ERR! Darwin 14.0.0
npm ERR! argv "node" "/usr/local/bin/npm" "run-script" "lint"
npm ERR! node v0.10.32
npm ERR! npm v2.1.7
npm ERR! code ELIFECYCLE
# and ~15 more lines...
Есть ли способ отключить весь этот мусор, чтобы я мог иметь чистый вывод, например npm test
script? Я вижу, как они поймали ошибку в исходном коде npm
, но я не думаю, что могу просто добавить пользовательскую команду без наложения npm
на это... Надеюсь, что я ошибаюсь!
Но если да, то лучше ли мне отталкивать такую задачу, как Grunt? Спасибо!
Используйте опцию npm run --silent
:
$ npm run --silent test
Еще меньше набрав, если вы определяете псевдоним оболочки:
$ alias run='npm run --silent'
$ run test
Если вы не заботитесь о сохранении кода возврата процесса linter, вы всегда можете настроить свой package.json
следующим образом:
{
// ...
"scripts": {
// ...
"lint": "eslint . || true",
}
}
Я просто пытался понять то же самое. Не идеальный ответ, но он как-то работал, чтобы указать linting как предварительный тест script (docs) следующим образом:
// package.json
{
// ...
"scripts": {
// ... definition for test ...
"pretest": "./node_modules/jsxhint/cli.js src/",
}
}
Затем, когда вы вводите npm test
в первый раз, вы получите только однострочную ошибку от NPM. Очевидно, это означает, что вы не сможете запускать свои тесты, если вы не начертали.
Другой вариант - использовать какой-то сторонний бегун для задач, например Make, Grunt или Gulp.
Я использовал только Make, и я считаю его самым безболезненным для настройки (по крайней мере, на OSX и Linux, не уверен в Windows).
Создайте Makefile
в корне, который выглядит так:
lint:
./node_modules/.bin/jslint ./*.js # or whatever your lint command is
test:
./node_modules/.bin/mocha test/*.js # or whatever your test command is
.PHONY: lint test
Затем введите make test
и make lint
для запуска этих команд.
Вы можете отключить ошибки перенаправление stderr в /dev/null. Например:
{
"test": "karma start" (package.json)
}
работает:
$ npm run test 2> /dev/null
теперь отправит все ошибки npm в /dev/null, но нормальный ввод все равно будет отображаться на консоли.
Поскольку ошибка генерируется npm, после выхода кармы с ненулевым статусом выполнение следующего недостаточно:
{
"test": "karma start 2> /dev/null"
}
но вы можете преодолеть это, создав еще одну задачу, которая вызывает эту задачу с перенаправлением stderr:
{
"test": "karma start",
"test:silent": "npm run test 2> /dev/null"
}
это обеспечит скрытие сообщений npm