Можно ли запустить nodemon и синхронизацию браузера с одним скриптом npm в экспресс-приложении?

#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. Похоже, это проблема вашего приложения. Попробуйте запустить его напрямую, чтобы увидеть резонанс сбоя приложения.