Использование опции node-sass watch с npm run-script

поэтому я запускаю задачи в сценариях пакета npm, но я хочу передать опцию watch в npm start.

это работает:

"scripts": {
  "scss": "node-sass src/style.scss dist/style.css -w"
}

это не компилировать, смотреть, или бросить любую ошибку:

"scripts": {
  "scss": "node-sass src/style.scss dist/style.css",
  "start": "parallelshell "npm run scss -- -w""
}

не работает без parallelshell или без стенографии.

Я предполагаю, что проблема в том, что run-script передает дополнительный аргумент в кавычках, поэтому команда выходит так:

node-sass src/style.scss dist/style.css "-w"

Я хотел бы, чтобы это работало без добавления каких-либо зависимости. Что я упускаю?

кстати, я в Windows 10 с командной строкой / Git bash.

4 ответов


Это моя настройка для CSS building

"scripts": {
  "css": "node-sass src/style.scss -o dist",
  "css:watch": "npm run css && node-sass src/style.scss -wo dist"
},
"devDependencies": {
  "node-sass": "^3.4.2"
}

флаг-o устанавливает каталог для вывода css. У меня есть не наблюдающая версия "css", потому что наблюдающая версия" css:watch " ~не строится сразу после запуска~, она работает только при изменении, поэтому я вызываю

npm run css 

перед вызовом

node-sass src/style.scss -wo dist

если вы хотите, чтобы он работал только при изменении, а не при первом запуске, просто используйте

"css:watch": "node-sass src/style.scss -wo dist"

основываясь на предыдущих ответах, другой вариант-использовать NPM пользовательские аргументы скрипта оставаться сухим, не повторяя build аргументы скрипта в watch сценарий:

"scripts": {
  "build:sass": "node-sass -r --output-style compressed src/style.scss -o dist",
  "watch:sass": "npm run build:sass && npm run build:sass -- -w"
}

в приведенном выше примере watch:sass скрипт работает следующим образом:

  1. запустить build:sass сценарий. Это скомпилирует ваш CSS.
  2. запустить build:sass скрипт снова, но на этот раз включить -w флаг. Это скомпилирует ваш CSS, когда одно из изменений в файле SASS.

уведомления -- опция используется в конце watch:sass сценарий. Это используется для передачи пользовательских аргументов при выполнении скрипта. От docs:

по состоянию на npm@2.0.0, вы можете использовать пользовательские аргументы при выполнении скриптов. Специальный параметр -- используется getopt для разграничения конца параметров. npm передаст все аргументы после -- непосредственно вашему скрипту.


Кстати, вот мои изменения:

"scss": "node-sass src/style.scss dist/style.css",
"start": "parallelshell \"npm run scss && npm run scss -- -w\"

Edit: Change был асинхронным запуском скрипта для начальной компиляции, а затем с флагом watch.


самый простой на мой взгляд, для меньшего быстрого проекта, просто откройте новое окно bash и вставьте:

node-sass src/ -wo dist