我可以在 1 个终端中 运行 两个正在进行的 npm 命令吗
Can I run two ongoing npm commands in 1 terminal
我的 npm 脚本中有这两个命令
"scripts": {
"webpack": "webpack --config webpack.config.js --watch",
"server": "nodemon server.js",
}
如您所见,每次我保存文件时一个 运行s webpack 和一个 运行s 带有 nodemon 的服务器,所以我不必输入 "npm start"或每次我保存文件时的某种东西。
现在这工作正常,但我需要 2 个终端始终打开 运行 它在我的屏幕上有点拥挤。
我不能让一个命令像这样读:
"start": "npm run webpack && npm run server"
因为 webpack 命令正在进行并且永远不会到达第二个命令。
有没有办法在 1 个终端中使用这两个命令,这是否可取?
您可以 运行 在后台使用 &
一个进程(一个和号,而不是两个),但这需要您手动管理它,这会很乏味。有关详细信息,请参阅 What does ampersand mean at the end of a shell script line?。
有人针对该用例构建了 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'"
实际上很简单,如果您不想等待第一个完成,请使用 & 而不是 &&。通过在命令末尾添加 &,您可以告诉它在后台执行。
简单示例
npm run webpack & npm run server
高级示例:
我 运行 2 个观察者(第一个是 vue 应用程序,第二个是 scss/js 主题文件夹)在 1 window 实际上在 2 个不同的文件夹中。所以双 && 和单 &
的组合
(cd ~/some-path && yarn encore dev --watch) & (cd ~/some-other-path/ && yarn run dev)
两个观察者的输出是混合的,但实际上没有问题。只是可读性会降低。
一个缺点是,当您像以前一样按 ctrl-c 停止进程时,它只会关闭当前 运行ning 非后台任务。第一个是背景中的 运行ning,因为紧随其后的是 &。
所以如果你想停止这两个进程,只需关闭终端 window 两个都将完成。
或按 ctrl-c 停止打开进程
然后执行以下命令:
杀死最后一个后台进程:
kill %1
或
kill 最后一条命令
kill $!
我的 npm 脚本中有这两个命令
"scripts": {
"webpack": "webpack --config webpack.config.js --watch",
"server": "nodemon server.js",
}
如您所见,每次我保存文件时一个 运行s webpack 和一个 运行s 带有 nodemon 的服务器,所以我不必输入 "npm start"或每次我保存文件时的某种东西。
现在这工作正常,但我需要 2 个终端始终打开 运行 它在我的屏幕上有点拥挤。
我不能让一个命令像这样读:
"start": "npm run webpack && npm run server"
因为 webpack 命令正在进行并且永远不会到达第二个命令。
有没有办法在 1 个终端中使用这两个命令,这是否可取?
您可以 运行 在后台使用 &
一个进程(一个和号,而不是两个),但这需要您手动管理它,这会很乏味。有关详细信息,请参阅 What does ampersand mean at the end of a shell script line?。
有人针对该用例构建了 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'"
实际上很简单,如果您不想等待第一个完成,请使用 & 而不是 &&。通过在命令末尾添加 &,您可以告诉它在后台执行。
简单示例
npm run webpack & npm run server
高级示例: 我 运行 2 个观察者(第一个是 vue 应用程序,第二个是 scss/js 主题文件夹)在 1 window 实际上在 2 个不同的文件夹中。所以双 && 和单 &
的组合(cd ~/some-path && yarn encore dev --watch) & (cd ~/some-other-path/ && yarn run dev)
两个观察者的输出是混合的,但实际上没有问题。只是可读性会降低。
一个缺点是,当您像以前一样按 ctrl-c 停止进程时,它只会关闭当前 运行ning 非后台任务。第一个是背景中的 运行ning,因为紧随其后的是 &。 所以如果你想停止这两个进程,只需关闭终端 window 两个都将完成。
或按 ctrl-c 停止打开进程 然后执行以下命令:
杀死最后一个后台进程:
kill %1
或
kill 最后一条命令
kill $!