2016-01-14 3 views
11

Так что я запускаю задачи в сценариях пакета npm, но хочу передать опцию watch в npm start.Использование опции watch-sass watch с npm run-script

Это работает:

"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 либо или без стенографии.

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

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

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

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

+0

Пожалуйста, обратите внимание мой ответ ([как-кан-i- получить узел-Сасс-часы-и-жить-перезарядку-к-работы-с-а-сингл-NPM-скрипта] (https://stackoverflow.com/questions/34350417/how-can-i-get-node -sass-watch-and-live-reload-to-work-from-a-single-npm-script/45183762 # 45183762)) на этом! –

ответ

14

Это моя установка для Css здания

"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: смотреть» ~ не строить, как только он запущен ~, он работает только на изменения, поэтому я называю

npm run css 

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

node-sass src/style.scss -wo dist 

Если вы только хотите его запустить на изменения, а не тогда, когда первый запуск, просто использовать

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

Не существует способа избежать двойных кавычек, которые он передает? Как я уже сказал, это работает: 'node-sass src/style.scss dist/style.css -w' Это не:' node-sass src/style.scss dist/style.css '-w « Спасибо за советы. Я их сейчас использую. –

+0

Вы можете избежать двойной кавычки, используя обратную косую черту. Например: \ "- w \", таким образом двойные кавычки не делают JSON недействительными, но они появляются, когда вы используете команду в терминале –

+0

Я получил это. Я имел в виду, что 'npm run scss - -w' не передает' node-sass src/style.css dist/style.scss '-w "'. –

1

Btw, вот мое изменение:

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

Теперь, чтобы получить, что к трубе через мои postcss задач ...

+0

Мне пришлось изменить вторую строчку на эту функцию для наблюдателя (parallelshell 2.0): '" start ":" parallelshell \ "npm run scss \" \ npm run scss - - -w \ "" ' – Rocco

+0

У меня тоже есть 2.0. Что делать, если вы запускаете задачи в синхронизации, например: 'npm run scss & npm run scss - -w'. Работает в любом случае на моем конце. –

+0

не для меня - наблюдатель фактически не оставался в режиме «смотреть», поэтому я придерживался параллельных документов. Также между тем я создал задачу «prewatch»: «prewatch»: «npm run scss» ' – Rocco

11

Опираясь на предыдущие ответы, еще один вариант заключается в привлечении НПМ custom script arguments оставаться DRY, не повторяя аргументы 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:

As of [email protected], you can use custom arguments when executing scripts. The special option -- is used by getopt to delimit the end of the options. npm will pass all the arguments after the -- directly to your script.

+2

https://media.giphy.com/media/1Z02vuppxP1Pa/giphy.gif – Pawel

0

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

node-sass src/ -wo dist 
Смежные вопросы