如何使用nodemon串联运行多个脚本?执行异常问题求助
解决用nodemon串联执行Angular构建与Node服务的问题
我明白你的痛点——想用nodemon实现「先构建Angular项目,再启动Node服务」的串联执行,还能在文件变化时自动重启,但直接用nodemon run start要么只跑一个命令,要么并行执行,完全不符合预期。下面给你两种靠谱的解决方案,根据你的开发需求选就行:
方案一:每次重启都完整执行构建+启动服务
这种方案适合需要确保每次重启都基于最新完整构建结果的场景,配置起来很直接:
- 先调整你的
package.json脚本:
"scripts": { "build": "ng build", "start:server": "node --inspect server.js", // 这里加上--inspect开启调试 "dev": "nodemon --exec \"npm run build && npm run start:server\" --watch src --watch server.js" }
- 执行命令:
npm run dev
关键说明:
--exec参数是核心:告诉nodemon每次重启时,执行后面的串联命令(先跑构建,再启动服务),而不是直接执行某个脚本文件。--watch指定要监视的文件/目录:src是Angular的源码目录,server.js是你的Node服务文件,只要这些内容变化,nodemon就会触发新一轮的构建+重启。
方案二:增量构建+监视输出目录(开发更高效)
如果觉得每次全量构建太慢,可以让Angular自动增量构建,nodemon只监视构建输出目录和服务文件,这样修改前端代码时,Angular会自动更新dist目录,nodemon检测到变化就重启服务:
- 调整
package.json脚本:
"scripts": { "build:watch": "ng build --watch", // 开启Angular增量构建监视 "start:server": "nodemon --inspect server.js --watch dist --watch server.js", // 监视dist和server.js "dev": "npm run build:watch & npm run start:server" }
- 执行命令:
npm run dev
关键说明:
ng build --watch会持续运行,自动检测前端代码变化并增量构建到dist目录。- 如果Windows系统下
&并行执行有问题,可以先安装concurrently包(npm i concurrently -D),然后把dev脚本改成concurrently \"npm run build:watch\" \"npm run start:server\",实现跨平台并行。 - nodemon监视
dist目录,一旦构建输出更新,就自动重启Node服务,同时保留--inspect调试功能。
为什么你之前的方法不行?
当你直接用nodemon run start时,nodemon会把run start当成要执行的「文件」,而不是shell命令,自然没法正确解析你npm start里的串联逻辑。必须用--exec参数明确告诉nodemon要执行的命令串,才能按顺序跑起来。
内容的提问来源于stack exchange,提问作者Pascal
相关产品推荐
相关产品推荐

