Подтвердить что ты не робот

Исключение ошибок при сбоях при запуске npm - script

Когда вы запускаете 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? Спасибо!

4b9b3361

Ответ 1

Используйте опцию npm run --silent:

$ npm run --silent test

Еще меньше набрав, если вы определяете псевдоним оболочки:

$ alias run='npm run --silent'
$ run test

Ответ 2

Если вы не заботитесь о сохранении кода возврата процесса linter, вы всегда можете настроить свой package.json следующим образом:

{
  // ...
  "scripts": {
    // ...
    "lint": "eslint . || true",
  }
}

Ответ 3

Я просто пытался понять то же самое. Не идеальный ответ, но он как-то работал, чтобы указать 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 для запуска этих команд.

Ответ 4

Вы можете отключить ошибки перенаправление 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