如何创建npm脚本:启动server时自动在client执行npm run build?
当然可行!我来给你分享几个简单靠谱的实现方案,都是日常项目里常用的:
方法1:使用
concurrently包(跨平台首选) 这个工具专门用来并行执行多个命令,完美解决Windows、Linux、macOS之间的命令兼容性问题,是最推荐的方式。
- 第一步:在server文件夹下安装依赖
npm install concurrently --save-dev
- 第二步:修改server目录下
package.json的scripts字段:
"scripts": { "start": "concurrently \"node server.js\" \"cd ../client && npm run build\"", // 注意:把`node server.js`替换成你实际的server启动命令,比如`nodemon server.js`之类的 "start:server": "node server.js", // 可以额外加一个单独启动server的命令,方便日常调试 "build:client": "cd ../client && npm run build" // 单独触发client构建的命令 }
这样当你在server文件夹执行npm start时,就会同时启动server服务,并且触发client文件夹的npm run build命令。
方法2:系统原生命令(适合单平台场景)
如果你只在单一操作系统下开发,可以不用额外安装包,直接用系统原生的命令实现:
- Linux/macOS:用
&让命令后台并行执行
修改server的package.json:"scripts": { "start": "node server.js & cd ../client && npm run build" } - Windows:用
start /B实现后台并行
修改server的package.json:"scripts": { "start": "start /B node server.js && cd ../client && npm run build" }
不过这种方式跨平台性差,换系统就得改脚本,所以还是更推荐第一种方案。
几个注意点
- 确认client文件夹的路径正确:比如如果你的项目结构是根目录下有
server和client两个文件夹,那../client是正确的,如果路径不同,记得调整cd后的路径。 - 如果你需要先完成client构建,再启动server(而不是同时执行),可以把并行命令改成顺序执行,比如:
这种场景适合server依赖client构建后的静态文件的情况。"start": "cd ../client && npm run build && node server.js"
内容的提问来源于stack exchange,提问作者kimura
相关产品推荐
相关产品推荐

