Использование sass-lint в скрипте npm приводит к ошибке

Я собираю приложение, используя angular-cli. Я собираюсь написать свои стили в SCSS, и поэтому я хочу, чтобы lint был доступен для моих файлов SCSS. Node-sass уже установлен при использовании angular-cli для создания приложения, и я установил sass-lint локально.

Теперь я могу успешно запустить команду linting из командной строки:

./node_modules/.bin/sass-lint 'src/**/*.scss' -v -q

И это дает мне список ошибок и предупреждений:

src/app/app.component.scss
  2:3   error    Expected `background-color`, found `color`                                     property-sort-order
  2:10  warning  Color 'red' should be written in its hexadecimal form #ff0000               no-color-keywords
  2:10  warning  Color literals such as 'red' should only be used in variable declarations   no-color-literals
  3:3   error    Expected `color`, found `background-color`                                  property-sort-order
  3:21  warning  Color 'blue' should be written in its hexadecimal form #0000ff              no-color-keywords
  3:21  warning  Color literals such as 'blue' should only be used in variable declarations  no-color-literals

Однако, когда я добавляю эту команду в качестве сценария NPM в package.json он выдает ошибку, хотя и дает результат linting:

{
    ...
    "scripts": {
        "scsslint": "./node_modules/.bin/sass-lint 'src/**/*.scss' -v -q"
    }
    ...
}

Результат вывода:

> starter@0.0.0 scsslint /home/brian/Projects/tutorials/angular2/starter
> sass-lint 'src/**/*.scss' -v -q


src/app/app.component.scss
  2:3   error    Expected `background-color`, found `color`                                  property-sort-order
  2:10  warning  Color 'red' should be written in its hexadecimal form #ff0000               no-color-keywords
  2:10  warning  Color literals such as 'red' should only be used in variable declarations   no-color-literals
  3:3   error    Expected `color`, found `background-color`                                  property-sort-order
  3:21  warning  Color 'blue' should be written in its hexadecimal form #0000ff              no-color-keywords
  3:21  warning  Color literals such as 'blue' should only be used in variable declarations  no-color-literals

✖ 6 problems (2 errors, 4 warnings)


npm ERR! Linux 4.4.0-64-generic
npm ERR! argv "/usr/local/bin/node" "/home/brian/.npm-packages/bin/npm" "run" "scsslint"
npm ERR! node v6.9.4
npm ERR! npm  v4.3.0
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! starter@0.0.0 scsslint: `sass-lint 'src/**/*.scss' -v -q`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the starter@0.0.0 scsslint script 'sass-lint 'src/**/*.scss' -v -q'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the starter package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     sass-lint 'src/**/*.scss' -v -q
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs starter
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls starter
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/brian/.npm/_logs/2017-03-14T11_52_04_406Z-debug.log

Вот результирующий вывод журнала из NPM:

0 info it worked if it ends with ok
1 verbose cli [ '/usr/local/bin/node',
1 verbose cli   '/home/brian/.npm-packages/bin/npm',
1 verbose cli   'run',
1 verbose cli   'scsslint' ]
2 info using npm@4.3.0
3 info using node@v6.9.4
4 verbose run-script [ 'prescsslint', 'scsslint', 'postscsslint' ]
5 info lifecycle starter@0.0.0~prescsslint: starter@0.0.0
6 silly lifecycle starter@0.0.0~prescsslint: no script for prescsslint, continuing
7 info lifecycle starter@0.0.0~scsslint: starter@0.0.0
8 verbose lifecycle starter@0.0.0~scsslint: unsafe-perm in lifecycle true
9 verbose lifecycle starter@0.0.0~scsslint: PATH: /home/brian/.npm-packages/lib/node_modules/npm/bin/node-gyp-bin:/home/brian/Projects/tutorials/angular2/starter/node_modules/.bin:/home/brian/.npm-packages/bin:/home/brian/bin:/home/brian/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin
10 verbose lifecycle starter@0.0.0~scsslint: CWD: /home/brian/Projects/tutorials/angular2/starter
11 silly lifecycle starter@0.0.0~scsslint: Args: [ '-c', 'sass-lint \'src/**/*.scss\' -v -q' ]
12 silly lifecycle starter@0.0.0~scsslint: Returned: code: 1  signal: null
13 info lifecycle starter@0.0.0~scsslint: Failed to exec scsslint script
14 verbose stack Error: starter@0.0.0 scsslint: `sass-lint 'src/**/*.scss' -v -q`
14 verbose stack Exit status 1
14 verbose stack     at EventEmitter.<anonymous> (/home/brian/.npm-packages/lib/node_modules/npm/lib/utils/lifecycle.js:279:16)
14 verbose stack     at emitTwo (events.js:106:13)
14 verbose stack     at EventEmitter.emit (events.js:191:7)
14 verbose stack     at ChildProcess.<anonymous> (/home/brian/.npm-packages/lib/node_modules/npm/lib/utils/spawn.js:40:14)
14 verbose stack     at emitTwo (events.js:106:13)
14 verbose stack     at ChildProcess.emit (events.js:191:7)
14 verbose stack     at maybeClose (internal/child_process.js:877:16)
14 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
15 verbose pkgid starter@0.0.0
16 verbose cwd /home/brian/Projects/tutorials/angular2/starter
17 error Linux 4.4.0-64-generic
18 error argv "/usr/local/bin/node" "/home/brian/.npm-packages/bin/npm" "run" "scsslint"
19 error node v6.9.4
20 error npm  v4.3.0
21 error code ELIFECYCLE
22 error errno 1
23 error starter@0.0.0 scsslint: `sass-lint 'src/**/*.scss' -v -q`
23 error Exit status 1
24 error Failed at the starter@0.0.0 scsslint script 'sass-lint 'src/**/*.scss' -v -q'.
24 error Make sure you have the latest version of node.js and npm installed.
24 error If you do, this is most likely a problem with the starter package,
24 error not with npm itself.
24 error Tell the author that this fails on your system:
24 error     sass-lint 'src/**/*.scss' -v -q
24 error You can get information on how to open an issue for this project with:
24 error     npm bugs starter
24 error Or if that isn't available, you can get their info via:
24 error     npm owner ls starter
24 error There is likely additional logging output above.
25 verbose exit [ 1, true ]

Я не могу понять, как найти причину этой ошибки. Может кто-то указать мне верное направление?

1 ответ

Ошибка, скорее всего, была вызвана ошибками Sass Linter, зафиксированными в коде.

Каждый раз, когда это происходит sass-lint устанавливает код выхода равным 1 (ошибка), который, в свою очередь, выбирается средой Node.js - следовательно, все эти ERR записи в журнале.

Если бы у вас был только линтер warningsкод завершения был бы 0 (или "успех"), и эта проблема не возникла бы.

Другие вопросы по тегам