npm7.18.1无--only=development参数如何仅安装devDependencies
npm 7+ 版本仅安装devDependencies的实现方案
npm从v7开始废弃了--only参数,替换为--omit和--include系列参数来控制依赖安装范围,对应你的多阶段Docker构建需求,可按以下方式实现:
1. 开发阶段仅安装devDependencies
执行以下命令即可跳过生产依赖、仅安装开发依赖:
npm install --include=dev --omit=prod
如果项目存在package-lock.json,推荐使用npm ci保证依赖版本完全一致,命令为:
npm ci --include=dev --omit=prod
2. 生产阶段仅安装生产依赖
执行以下命令跳过所有devDependencies,仅安装生产环境需要的依赖:
npm ci --omit=dev
多阶段Dockerfile参考示例
# 第一阶段:开发/构建阶段 FROM node:16-alpine AS builder WORKDIR /app COPY package*.json ./ # 仅安装开发依赖,用于后续的代码编译、打包等操作 RUN npm ci --include=dev --omit=prod COPY . . # 执行打包命令,比如前端项目的build RUN npm run build # 第二阶段:生产运行阶段 FROM node:16-alpine AS production WORKDIR /app COPY package*.json ./ # 仅安装生产依赖 RUN npm ci --omit=dev # 从上一阶段拷贝打包后的产物 COPY --from=builder /app/dist ./dist CMD ["npm", "run", "start"]
内容的提问来源于stack exchange,提问作者Élodie Petit
相关产品推荐
相关产品推荐

