如何配置单条npm脚本实现多目录依赖安装与前后端服务同时启动
问题根源
- 无限循环是因为install是npm内置的生命周期钩子:当你在
scripts中自定义了install字段,每次执行npm install完成核心安装逻辑后,都会自动执行这个自定义脚本。而你的脚本里又调用了npm install,直接触发无限递归。 - 首次执行无法使用concurrently是因为:concurrently属于项目依赖,第一次执行安装操作时它还没有被安装到本地,自然找不到对应命令。
修复方案
- 先将concurrently安装到根目录的开发依赖中,无需全局安装:
npm install -D concurrently
- 修正根目录
package.json的scripts配置:
- 不要使用
install作为自定义安装脚本的名称,避免和npm内置钩子冲突 - 安装依赖建议串行执行,避免并行安装出现锁文件冲突、依赖写入异常问题
- 修正脚本拼写错误(原配置中
dev-both调用的client-dev和实际定义的dev-client不匹配) - 可以用npm的
--prefix参数代替cd跳转目录,写法更简洁
修改后的完整scripts参考:
"scripts": { "test": "jest", "start": "node index.js", "build": "npm run build --prefix client", "install-client": "npm install --prefix client", "heroku-postbuild": "npm run install-client && npm run build", "dev-client": "npm start --prefix client", "dev": "nodemon index.js", "install-all": "npm install && npm run install-client", "dev-both": "concurrently \"npm run dev\" \"npm run dev-client\"" }
使用方式
- 一次性安装所有依赖:在项目根目录执行
npm run install-all即可 - 同时启动前后端开发服务:执行
npm run dev-both即可
内容的提问来源于stack exchange,提问作者Nitzan Savion
相关产品推荐
相关产品推荐

