侧边栏壁纸
  • 累计撰写 232 篇文章
  • 累计创建 285 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

为啥要用 "preinstall": "npx only-allow pnpm"?一劳永逸地统一依赖管理工具!

DGF
DGF
2025-07-24 / 0 评论 / 0 点赞 / 19 阅读 / 0 字

在多人协作或者维护开源项目时,最常见的坑之一就是“大家使用不同的包管理器导致依赖装的不一样”。有的用 npm,有的用 yarn,有的用 pnpm,结果搞得项目一会出 bug,一会锁文件冲突……非常头疼。

有没有一种简单方式,强制大家统一使用某一个包管理器,比如 pnpm?答案就是:

"preinstall": "npx only-allow pnpm"

看到这句话你可能会问:这到底是啥?有啥用?下面咱们来详细聊聊。

这段代码到底干嘛的?

它出现在项目的 package.json 中,是一个生命周期钩子(npm lifecycle script):

"scripts": {
  "preinstall": "npx only-allow pnpm"
}

意思是:每次有人运行 npm installpnpm install 之类的操作时,会先自动执行这段命令

only-allow 是一个小工具,顾名思义,它的作用就是:只允许某个包管理器来安装依赖,其他一律拦截!

比如上面这句就表示:

“只能用 pnpm 来装依赖,其它比如 npmyarn 全部拒绝执行!”

实际效果演示一下

当别人用错工具时,会收到类似下面的提示:

$ npm install

This project requires using "pnpm".
Please install it by running: npm i -g pnpm

是不是很贴心,还顺带教你怎么装 pnpm 😂

而使用正确的 pnpm install 时,流程就会正常走下去,依赖愉快地装好。

总之,"preinstall": "npx only-allow pnpm" 是一个优雅且极其有效的方式来规范团队使用同一个包管理器(比如 pnpm)

它能帮助我们:

  • 统一依赖安装方式
  • 减少协作 bug
  • 避免锁文件冲突
  • 提升开发体验

团队项目或者开源项目都非常值得加上这条配置,让项目“从源头就健康”。

为什么推荐强制用 pnpm?

很多团队或者项目都开始默认使用 pnpm,主要有这些理由:

  1. 速度快:安装速度比 npmyarn 都快不少,尤其是大项目。
  2. 磁盘占用少pnpm 使用硬链接,多个项目共享依赖,磁盘空间节省一大截。
  3. 结构清晰:依赖树更严格,避免重复或幽灵依赖(比如你没装但却能用的依赖)。
  4. 兼容性好:现在已经基本能兼容大多数 Node 项目。

总之,它不是潮流,而是提升开发体验和项目可维护性的利器。

怎么配置到项目里?

很简单,三步走搞定:

1️⃣ 安装 only-allow

pnpm add -D only-allow

(如果你还没用 pnpm,可以先用 npm 安装一遍)

2️⃣ 编辑 package.json 脚本部分

加一条 preinstall 脚本:

"scripts": {
  "preinstall": "npx only-allow pnpm"
}

3️⃣ 通知你的队友 / 写进文档

告诉大家:项目必须用 pnpm 安装依赖!

如果他们没装,可以用下面的命令:

npm install -g pnpm

Tips:可以换成其他包管理器吗?

当然可以,only-allow 支持:

  • only-allow npm
  • only-allow yarn
  • only-allow pnpm

你想强制用哪个就写哪个,非常灵活。

如果你还没用过,赶紧试试看吧!统一包管理工具,从这一行配置开始~

0

评论区