Могу ли я запустить две текущие команды 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 3

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'"