2021-07-22 初稿 2021-10-10 补充 目前主力使用 pnpm 了真香
看github上一个项目的源码,发现他用的 pnpm
作为包管理工具,这啥?有一个 yarn
还不够?这里简单体验一下,后面再用到了,补充技术细节。
官网介绍:
Fast, disk space efficient package manager快速的,节省磁盘空间的包管理工具
https://github.com/pnpm/pnpm
截至 2021-07-22 版本 v6
存在的意义
为何存在,能解决什么问题?https://zhuanlan.zhihu.com/p/377593512
通过阅读能了解到,
- 安装速度快。比 yarn PnP 还快。走的是 npm mirror 确实特别快
- 体积不冗余。说到底安装时候是写入硬盘,后续硬链接hard link 连接,这意味着多次安装相同项目到不同目录,不会产生冗余,多版本也会尽可能复用。
- monorepo 本身支持常见命令
特点:
- 快速pnpm 比替代品快2x
- 高效 Node_modules 中的文件是从一个单一的可内容寻址的存储中链接过来的
- 支持 monorepos pnpm 内置支持了单仓多包
- 严格 pnpm 创建了一个非平铺的 node_modules,因此代码无法访问任意包
安装配置使用
# 安装
npm install -g pnpm
# 升级
pnpm add -g pnpm
日常使用
pnpm install axios
pnpm i axios -D --prefer-offline
pnpm i axios -S
pnpm uninstall axios --filter package-a
pnpm add xx
pnpm build/dev
# 内置了类似 npx 的东西
pnpx xx
pnpm link ../../axios 本地项目链接到另一个项目
简单过了一下命令,可以更倾向于使用offline,对monorepo 工作空间有细致描述。
从日常的使用上没太看出来区别。先不管了,先用着。
还有,一定要看node兼容性,比较追新。
pnpx 类似 npx 调整你为
- pnpm exec 从项目内执行,也可以不写 exec
- pnpm dlx 临时下载
过滤
pnpm xxx —filter some package