#javascript #express #browser-sync #nodemon #npm-scripts
#javascript #экспресс #синхронизация с браузером #nodemon #npm-скрипты
Вопрос:
В моем экспресс-приложении я использую nodemon
и browser-sync
вместе. У меня есть эти скрипты npm в моем package.json
:
"scripts": {
"start": "node ./bin/www",
"start:nodemon": "nodemon ./bin/www",
"start:debug": "SET DEBUG=img:* amp; npm run start:nodemon",
"start:browser-sync": " browser-sync start --proxy 'localhost:3000' --files 'public,views'",
"test": "npm run start:debug amp; npm run start:browser-sync"
}
В настоящее время я открываю два cmd
окна и в первом запускаю start:debug
, а в другом запускаю start:browser-sync
. Все работает просто отлично.
Я думал, что смогу объединить эти скрипты и запустить их, как это делается в моем test
скрипте, однако это так не работает. Похоже, что он запускается nodemon
и игнорируется browser-sync
. Итак, могу ли я каким-то образом запустить эти два скрипта вместе с одним скриптом npm, или это технически невозможно, и я должен запустить два cmds
, чтобы он работал? Спасибо.
Ответ №1:
Это потому amp;
, что between commands означает «выполнить первую команду в фоновом режиме, а вторую — на переднем плане» в Bash, в то время как в Windows cmd это означает «выполнить вторую команду после завершения первой».
Для параллельного запуска команд независимым от платформы способом вы можете использовать, например, npm-run-all:
{
"scripts": {
"start": "node ./bin/www",
"start:nodemon": "nodemon ./bin/www",
"start:debug": "SET DEBUG=img:* amp; npm run start:nodemon",
"start:browser-sync": " browser-sync start --proxy 'localhost:3000' --files 'public,views'",
"test": "run-p start:debug start:browser-sync"
}
}
Или вы можете попробовать запустить-z:
{
"scripts": {
"start": "node ./bin/www",
"start:nodemon": "nodemon ./bin/www",
"start:debug": "SET DEBUG=img:* amp; npm run start:nodemon",
"start:browser-sync": " browser-sync start --proxy 'localhost:3000' --files 'public,views'",
"test": "run-z start:debug,start:browser-sync"
}
}
Последнее можно использовать без установки. Просто запустите
npx run-z start:debug,start:browser-sync
Комментарии:
1. Спасибо, я попробовал первый и получил сообщение об ошибке
[nodemon] app crashed - waiting for file changes before starting...
2. Похоже, это проблема вашего приложения. Попробуйте запустить его напрямую, чтобы увидеть резонанс сбоя приложения.