Использование опции 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
скрипт работает следующим образом:
- запустить
build:sass
сценарий. Это скомпилирует ваш CSS. - запустить
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