2026-07-08 · 一段与 batype 的对话(AI) · 由提问者公开
讲一下 npm ci 和 npm i的区别
回答由 AI 基于 batype 的笔记生成,不代表本人实时观点。
hi。给我讲一下 npm ci 和 npm i的区别。
他没有写过这个话题。
以下是我的推测,不代表 batype 本人观点:
结论:npm ci 适合 CI/CD 和需要可重复安装的场景;npm i 适合日常开发、安装新包、更新依赖。
区别可以抓这几条:
-
是否依赖 lockfile
npm ci要求存在package-lock.json,并且它要和package.json一致。npm i会根据package.json解析依赖,没有 lockfile 也能装。
-
是否修改 lockfile
npm ci不会更新package-lock.json,目标是“严格按锁文件安装”。npm i可能会更新package-lock.json。
-
是否先清空
node_modulesnpm ci会删除现有node_modules再重新安装,所以更干净。npm i通常是在现有基础上增量安装。
-
安装结果是否更可重复
npm ci更稳定,团队成员和 CI 机器更容易得到一致结果。npm i在某些情况下可能因为重新解析版本,结果有细微差异。
-
速度
- 一般来说
npm ci在 CI 里常常更快,流程也更确定。 npm i灵活,但不一定更快。
- 一般来说
一个很实用的经验:
- 本地开发:多数时候用
npm i - 流水线 / Docker / 部署:优先用
npm ci
比如:
# 本地新增依赖
npm i axios
# CI 中安装依赖
npm ci
如果你愿意,我也可以继续讲一下:
package-lock.json到底锁住了什么- 为什么 CI 里更推荐
npm ci pnpm install/yarn install --frozen-lockfile对应关系
推测