title: nodejs调试时同时运行两个命令
tags: []
date: 2024-03-23 18:51:09
date modified: 2024-03-23 18:53:26nodejs调试时同时运行两个命令
最近在一直hugo-book这个主题的时候发现在调试时不能同时通过 npx eleventy --serve && rollup -w -c ,找了很多资料没有找到合适的解决办法。
最后通过GPT4解决,利用 npm-run-all这个包处理。
可以使用npm的concurrently或者npm-run-all来并行运行多个scripts。
先安装concurrently:
npm install --save concurrently
然后在package.json中添加以下script:
"scripts": {
"serve": "concurrently \"rollup -c --watch\" \"npx eleventy --serve\"",
"build": "rollup -c && npx eleventy"
}
这个script会先运行rollup -c --watch和npx eleventy --serve。其中rollup -c --watch会在文件更改时重新运行 rollup,而 npx eleventy --serve会在文件更改时重新运行 11ty。优点是这两个命令同时运行,所以他们都会在文件更改时立即更新,不需要手动重新运行它们。
也可以安装使用npm-run-all:
npm install npm-run-all --save-dev
然后在package.json中添加以下script:
"scripts": {
"rollup": "rollup -c --watch",
"serve": "npx eleventy --serve",
"start": "run-p rollup serve"
}
其中run-p是npm-run-all提供的命令,可以并行运行多个npm scripts,上面的script效果跟使用concurrently是一样的。
不过这些方法都不适合先后顺序执行rollup和11ty的情况,因为--watch模式一旦开始就不会结束,它会一直等待文件更改然后再次运行。如果你的用例确实需要先执行rollup然后执行11ty,而且两者不能并行,那么你可能需要创建一个node.js脚本来依次调用这两个命令,并在每次文件更改时重新运行该脚本。