本地用 pnpm 省磁盘,团队继续用 npm:极简实践

本地用 pnpm 省磁盘,团队继续用 npm:极简实践

团队继续用 npm,Docker 流程不变。想省磁盘的人在自己电脑上装个 pnpm,跑几条命令即可。pnpm 产生的文件都留在本地,不提交 Git,不影响任何人。

为什么要这么做

pnpm 的磁盘节省来自全局内容寻址存储 + 硬链接 :同一个包在所有 pnpm 项目之间,文件内容只存一份 ,每个项目的 node_modules 里只是多了一个指向它的硬链接。项目越多、重复依赖越多,节省越明显。

这套方案的原则只有一条:

pnpm 产生的一切文件,都不进 Git;Git 里只保留团队原有的 package-lock.json。

这样,愿意尝试的人能立刻享受磁盘节省,不换的人继续用 npm,双方互不干扰。


一、首次安装(每人一次)

bash 复制代码
npm install -g pnpm

验证:

bash 复制代码
pnpm -v

二、在项目中首次迁移(每人一次,项目根目录执行)

1. 基于团队 package-lock.json 生成本地 pnpm 锁文件

bash 复制代码
pnpm import

pnpm import 会自动读取当前目录的 package-lock.json,生成 pnpm-lock.yaml,保证依赖版本与团队 npm 对齐。不要写成 pnpm import package-lock.json,该命令不接受文件路径参数。

2. 用 pnpm 安装依赖

bash 复制代码
pnpm install

3. 如果报 ERR_PNPM_IGNORED_BUILDS

pnpm 出于安全考虑默认拦截未审批的构建脚本(如 esbuild、vue-demi)。执行:

bash 复制代码
pnpm approve-builds --all
pnpm install

4. 确保 .gitignore 忽略 pnpm 文件

在 .gitignore 中加入:

gitignore 复制代码
pnpm-lock.yaml
pnpm-workspace.yaml

不要忽略 package-lock.json,它仍然是团队共享的唯一锁文件。


三、日常同步团队更新

当有人用 npm 更新了依赖并推送了新的 package-lock.json 后,你在本地执行:

bash 复制代码
git pull
pnpm import
pnpm install

每次 git pull 后先 pnpm import,再 pnpm install,这是保证你本地依赖与团队 npm 版本严格一致的关键习惯。


四、命令速查

场景 命令
全局安装 pnpm npm install -g pnpm
查看版本 pnpm -v
基于 package-lock.json 生成本地锁文件 pnpm import
安装依赖 pnpm install
批准构建脚本 pnpm approve-builds --all

五、对 Docker / 部署流程的影响:零

这套方案不要求修改 Dockerfile 。Docker 构建时读取的是 package-lock.json,继续使用 npm ci 即可。pnpm-lock.yaml 和 pnpm-workspace.yaml 都不进 Git,Docker 构建上下文里不会出现它们,现有部署流程完全不变。


六、给同事的一句话

继续用 npm 没问题。想省磁盘的人装个 pnpm,跑 pnpm import 和 pnpm install,之后每次 git pull 后重新 pnpm import 一下即可。pnpm 文件都在本地,不提交,不影响 npm,也不影响 Docker。


总结

  • 团队共享锁文件:package-lock.json
  • 本地 pnpm 锁文件:pnpm-lock.yaml,通过 .gitignore 忽略
  • 本地 pnpm 配置:pnpm-workspace.yaml,通过 .gitignore 忽略
  • 每次拉取团队代码后:pnpm import → pnpm install
  • Docker / 部署:继续 npm ci,零改动
相关推荐
believed_breadfruit1 小时前
我开源了一个HTML 分页导出工具,解决了复杂页面的内容截断、跨页错乱和长文档白屏问题
前端·javascript·github
福狼1 小时前
从“网墙”到柔性曲面:一次 WebGPU 波浪的逆向分析与重建
前端·逆向
宝哥聊编程1 小时前
主流 Agent 平台对比:Coze、Dify、飞书、扣子、OpenClaw 落地实操手册
前端·人工智能·飞书
时间的情敌2 小时前
Vue3 + Cesium 实战:本地上传 GLB 模型、模型上叠加 GLB、点击控制透明度
前端·vue.js·cesium
拖孩2 小时前
流量主门槛从 500 降到 100,我的小程序上线 18 小时够到了线
前端·后端·微信小程序
深蓝AI2 小时前
编码 Agent 的界面味靠提示词压不住:Impeccable 用无模型规则拦同一套模板
前端·程序员
January12073 小时前
【AI方法笔记】2026-11-02:模型流式吐 JSON 时,前端会遇到四种崩法
前端·人工智能·笔记·json
asdzx673 小时前
C# 操作 PDF 元数据:从属性写入到字段提取的完整流程
前端·pdf·c#
吹什么轩3 小时前
constexpr 完全指南:从 const 的两种含义,到编译期计算的四次演进
java·前端·javascript