Могу ли я запустить две текущие команды npm в 1 терминале
У меня есть эти 2 команды в моих сценариях npm
"scripts": {
"webpack": "webpack --config webpack.config.js --watch",
"server": "nodemon server.js",
}
Как вы можете видеть, один запускает webpack каждый раз, когда я сохраняю файл, а другой просто запускает сервер с nodemon, поэтому мне не нужно вводить "npm start" или что-то в этом роде каждый раз, когда я сохраняю файл.
Теперь это работает нормально, но мне нужно 2 терминала всегда открыты, чтобы запустить его, и он становится немного переполнен на моем экране.
И я не могу позволить, чтобы одна команда читалась так:
"start": "npm run webpack && npm run server"
Потому что команда webpack продолжается и будет никогда не достигайте второй команды.
Есть ли способ иметь эти две команды в 1 терминале, это вообще целесообразно?
1 ответ:
Вы можете запустить один процесс в фоновом режиме с помощью
&
(один амперсанд, а не два), но это потребует от вас ручного управления, что будет довольно утомительно. Подробнее см. Что означает амперсанд в конце строки скрипта оболочки?.Для этого случая использования кто-то построил
concurrently
, это упрощает параллельное выполнение процессов и отслеживание их результатов.npm install --save-dev concurrently
И ваш
start
скрипт становится:"start": "concurrently 'npm run webpack' 'npm run server'"
Если вы хотите сделать вывод немного красивее вы можете дать процессам имена с
-n
и цвета с-c
, например:"start": "concurrently -n 'webpack,server' -c 'bgBlue.bold,bgGreen.bold' 'npm run webpack' 'npm run server'"