在多人协作或者维护开源项目时,最常见的坑之一就是“大家使用不同的包管理器导致依赖装的不一样”。有的用 npm
,有的用 yarn
,有的用 pnpm
,结果搞得项目一会出 bug,一会锁文件冲突……非常头疼。
有没有一种简单方式,强制大家统一使用某一个包管理器,比如 pnpm
?答案就是:
"preinstall": "npx only-allow pnpm"
看到这句话你可能会问:这到底是啥?有啥用?下面咱们来详细聊聊。
这段代码到底干嘛的?
它出现在项目的 package.json
中,是一个生命周期钩子(npm lifecycle script):
"scripts": {
"preinstall": "npx only-allow pnpm"
}
意思是:每次有人运行 npm install
或 pnpm install
之类的操作时,会先自动执行这段命令。
而 only-allow
是一个小工具,顾名思义,它的作用就是:只允许某个包管理器来安装依赖,其他一律拦截!
比如上面这句就表示:
“只能用
pnpm
来装依赖,其它比如npm
、yarn
全部拒绝执行!”
实际效果演示一下
当别人用错工具时,会收到类似下面的提示:
$ 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
,主要有这些理由:
- 速度快:安装速度比
npm
、yarn
都快不少,尤其是大项目。 - 磁盘占用少:
pnpm
使用硬链接,多个项目共享依赖,磁盘空间节省一大截。 - 结构清晰:依赖树更严格,避免重复或幽灵依赖(比如你没装但却能用的依赖)。
- 兼容性好:现在已经基本能兼容大多数 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
你想强制用哪个就写哪个,非常灵活。
如果你还没用过,赶紧试试看吧!统一包管理工具,从这一行配置开始~
评论区