返回知识库

工程与栈 · 开发基础

npmnpm

npm ci 按锁文件原样还原,对不上就失败;install 可能重写锁。CI 用 ci,才能装到同一棵树。

先认出这只 node_modules 文件夹,再跑 npm ci

下面就是终端和文件夹:默认 ci 已经按锁填满。锁一漂移,空文件夹和 exit 1 写在同一块板上。

周末市集店 · 终端exit 0 · 已还原

$ npm ci

node_modules · 184 个包

按 package-lock.json 原样填满

exit 0 · 已还原还原结果长在 node_modules 上。

原因:ci 按锁文件原样还原,成功写在文件夹上。下一步:点「锁漂移再 ci」,看文件夹会不会被倒空。

知识点:四条命令改不同物件

文件夹已经演示了 ci,这里补齐另外三条怎么用。

  • npm ci:按锁原样还原,对不上就失败,给 CI 用。
  • npm install:本地还原,必要时会重写锁文件。
  • npm run:跑 package.json 里命名好的脚本,例如 build。
  • 离开后要盯:lockfile 进仓;CI 用 ci,不要用会改锁的 install。

什么时候用、怎么用

clone 后还原、加包、跑脚本、查漏洞时用 npm;不要混用 pnpm 再交同一把锁。

  • 信号:CI 红在安装、本地能装线上装失败、lock 被悄悄改。
  • 适用:冻结还原、跑命名脚本、审计漏洞。
  • 不适用:改业务逻辑本身——npm 不管你的函数对不对。
  • 最短路径:锁进仓 → CI 跑 npm ci → 本地加包再用 install 更新锁。

正反例:同一只 node_modules

目标都是还原依赖,只改锁漂不漂移。

正例锁对齐后跑 npm ci

文件夹填满,exit 0。结果长在物件上。

反例锁漂移还用 ci 指望它改锁

文件夹空着,exit 1。失败写在板上。

快速自测

CI 里清单和锁对不上,应该用哪条命令?

继续查证

术语的技术定义和行为以这些一手或权威资料为准。

下一步学

和本知识点经常一起出现的概念。