在Azure CI/CD流水线使用npm workspaces构建React web应用可行性咨询
可行性确认
完全可以正常运行,不需要调整你现有的monorepo结构,也不需要更换Azure CI/CD 预设的Node.js 14运行环境,仅需要在构建任务的前置步骤中手动升级npm版本即可实现对npm workspaces的完整支持。
具体实践方案
- 依赖安装前添加npm升级步骤,执行命令
npm install -g npm@8,npm@8是Node.js 14能兼容的最高稳定npm版本,完整覆盖npm workspaces所有特性,不存在运行兼容性问题。 - 依赖安装直接在仓库根目录执行
npm install即可,npm会自动识别根目录package.json中的workspaces配置,完成所有子包的依赖安装、跨包软链接挂载,不需要额外调整web子包的配置。 - 构建web子包时,可以直接执行
npm run build -w packages/你的web子包目录名,也可以进入子包目录执行常规构建命令,两种方式都能正常识别workspace下的跨包依赖引用。
额外注意事项
- 你当前的轻量化选型方案不需要做任何调整,不需要引入lerna等第三方工具,升级npm后原生workspaces即可正常工作,代码改动量和依赖增量都可以保持最低。
- 建议在根目录package.json的
engines字段中指定npm >=7,同时添加.npmrc配置engine-strict=true,避免本地开发时低版本npm安装依赖导致的软链接失效问题。 - 构建缓存可以直接缓存根目录的node_modules,不需要单独缓存子包的node_modules,npm workspaces会自动把公共依赖提升到根目录,缓存命中率更高,能缩短整体构建时长。
内容的提问来源于stack exchange,提问作者Paul Bruno
相关产品推荐
相关产品推荐

