你可能会说:
- “npm、pnpm、yarn 到底用哪个?”
- “npm install 和 npm ci 有什么区别?”
它是什么
npm 是 Node.js 自带的包管理器,pnpm、yarn、bun 是另外几种选择。它们都读 package.json,但各自生成自己格式的锁文件,一个项目最好只用一种。
npm install 会按版本范围安装,必要时更新锁文件;npm ci 严格按锁文件安装,锁文件对不上就报错。部署平台构建时一般用后者,保证每次装出来的都一样。
包管理器本身也有版本。同样是 npm,10 和 11 生成的锁文件就可能不同。本地和线上用的版本,最好保持一致。
打个比方
像采购员:拿着清单(package.json)去进货,把实际买到的每样东西记进账本(锁文件)。换了采购员,记账的格式可能就不一样。
在这个网站里
这个网站用 npm。本地装的是 npm 11,Cloudflare 的构建环境用的是 npm 10,所以锁文件要用 npx npm@10 install 生成。这条规矩写在了 README 的"部署"一节里。
容易搞混的地方
常见误解
包管理器只影响安装速度,用哪个都一样
正确理解
它们生成的锁文件格式和解析规则不同。混用会让本地和线上装出不一样的依赖。
你可以这样告诉 AI
复制下面这段,贴给你的 AI
这个项目用的是哪个包管理器、哪个版本?部署平台构建时用的是哪个版本、执行的是什么安装命令?两边不一致的地方请列出来,并告诉我怎么对齐。
接下来去哪
先知道
- 依赖——项目运行需要、但不是你自己写的代码:框架、工具库,以及它们各自又依赖的一长串包。
接着看
在这些课里出现