npm scripts nodemon - отслеживание изменений в файлах js и scss

Я экспериментирую с настройкой среды разработки для использования только NPM, без использования grunt.js или bower.js.

Я следовал этому руководству: http://beletsky.net/2015/04/npm-for-everything.html

Я использую nodemon, чтобы следить за своими файлами .js и .scss на предмет изменений, которые перезапускают сервер node. Итак, в моем файле package.json в сценариях у меня есть

скрипты:

"watch-js": "nodemon -e js --watch public/js -x \"npm run build-js\"",

"watch-sass": "nodemon -e scss --watch public/sass -x \"npm run build-sass\"",

"watch": "npm run watch-js & npm run watch-sass"

Но когда я запускаю npm run watch, он следит только за изменением общедоступных файлов / js. И соответственно запускает сборку.

Но он не будет следить за файлами sass.

Версии: node v0.10.36 nodemon v1.4.1

Я также включаю сценарий сборки, который, если я запускаю, компилирует sass в css, поэтому мой сценарий build-sass должен быть в порядке

"build": "npm run build-js & npm run build-sass",
"watch": "npm run watch-js & npm run watch-sass"

person conor909    schedule 20.08.2015    source источник
comment
Я пробовал настроить это, и, похоже, он работает нормально, как и у вас. Я заменил ваш -x на -x \"echo js file changed\" как для js, так и для sass, и сообщения были показаны, как и ожидалось, для обоих. Кажется, nodemon работает. Может проблема в вашем build-sass скрипте?   -  person Robbie    schedule 20.08.2015
comment
build-sass script: "build-sass": "node-sass public/sass/main.scss public/build/main.css", У меня также есть сценарий сборки, в котором используется сценарий build sass, и он отлично работает   -  person conor909    schedule 21.08.2015
comment
когда вы говорите it won't watch for the sass files, вы имеете в виду, что файлы sass не восстанавливаются или этот nodemon не выполняет повторно задачу?   -  person Robbie    schedule 21.08.2015
comment
nodemon вообще не выполняет эту часть (sass) задачи, но следит за изменениями js   -  person conor909    schedule 21.08.2015
comment
Я следовал этому руководству beletsky.net/2015/04/npm-for-everything. html   -  person conor909    schedule 21.08.2015
comment
ты на окнах? могло ли это быть связано - блог . keithcirkel.co.uk/how-to-use-npm-as-a-build-tool/ - если да, возможно, вам стоит попробовать это github.com/keithamus/parallelshell - как кроссплатформенное решение   -  person Robbie    schedule 21.08.2015
comment
Да я на windows! Я просмотрю эти ресурсы и буду обновлять эту страницу по мере продвижения. Я ценю вклад @Robbie   -  person conor909    schedule 21.08.2015


Ответы (3)


Если вы используете окна, вы можете столкнуться с проблема с Windows

Поскольку npm зависит от оболочки операционной системы для выполнения команд сценария, они могут быстро стать непереносимыми. В то время как Linux, Solaris, BSD и Mac OSX предустановлены с Bash в качестве оболочки по умолчанию, Windows этого не делает. В Windows для этих целей npm будет использовать командную строку Windows.

Если это так, вы можете попробовать использовать parallelshell или npm-run-all для лучшей кроссплатформенной поддержки.

person Robbie    schedule 20.08.2015
comment
Отлично, это сработало! Я установил parallelshell и изменил свои скрипты, чтобы они имели такую ​​структуру: watch: parallelshell \ npm run watch-js \ \ npm run watch-sass \ - очень признателен @Robbie - person conor909; 21.08.2015

Это работает для меня в Mac OS

  1. Установить nodemon

    npm install --save-dev nodemon

  2. Установите npm-run-all:

    npm install --save-dev npm-run-all

  3. В package.json добавьте два скрипта:

    "startn": "nodemon ./app.js", "watch-jscss": "gulp watch"

    • Where 'app.js' is your server file
    • "gulp watch" можно заменить любой задачей, выполняющей sass watch
  4. В консоли:

    npm-run-all --parallel watch-jscss startn

person PRIS54    schedule 29.06.2017

попытаться изменить,

"watch": "npm run watch-js & npm run watch-sass"

to

"watch": "npm run watch-js && npm run watch-sass"
person Chandu9999    schedule 20.08.2015
comment
это тоже, к сожалению, не работает, результат тот же, что и у одиночного & - person conor909; 20.08.2015
comment
единственный & действительно действителен, он позволяет задачам выполняться параллельно. На самом деле это не работает, если вы используете &&, потому что второй сценарий ожидает завершения первого, а он не - person Robbie; 20.08.2015
comment
npm run watch-js || true && npm run watch-sass может сработать. Мне приходилось делать это с другими стартовыми скриптами. - person BishopZ; 11.07.2019