pnpm对比npm/yarn的优点:
- 更快速的依赖下载
- 更高的利用磁盘空间
- 更优秀的包依赖管理
我们按照包管理工具发展历史从,npm2讲起:
npm2
用node版本需要 4 ,npm版本是2.x npm2 的 node_modules 是嵌套的 问题: 多个包之间难免会有公共依赖,依赖复制很多次,会占据比较大的磁盘空间 致命问题: windows 的文件路径最长是260,容易超过路径最长限制 后来除了yarn
yarn
- yarn 解决方案是平铺
- 全部平铺再node-modeules 文件下
- 后来npm3 也实现了这种方式
- 问题1: 幽灵依赖 即使没有声明再dependencies 里的依赖,但在代码里缺了一require进来
- 问题2:依赖包多个版本,只会升级一个,其余版本的包还是会复制很多次,还是会有依赖问题
pnmp
- link 方式 也就是软硬链接,这是操作系统提供的机制,硬链接就是同一文件的不同引用,软链接是新建一个文件,文件内容指向另外一个路径
- 避免了多次复制磁盘空间浪费我呢提,而且不会有过长的路径,各个节点目录都是link,所以不会有长度问题
- 节省时间
- 节省磁盘空间
- 更优秀的包依赖管理
注释: npx 是包执行器
npx create-react-app my-app # 临时下载并运行,不全局安装
npx eslint --fix . # 运行本地安装的 eslint
npx -p typescript tsc --init # 指定包并执行其中的命令