概述
npm是Node.js内置的包管理工具。但是因对日益膨胀的包之间的依赖关系,有点跟不上发展。
虽然npm 3开始采用了扁平的依赖关系树来处理包的依赖。
面临项目中动不动就上千的包依赖,每次安装包就得好等一会,而且大量浪费磁盘空间。
虽然yarn着手解决于npm一些不足,主要是解决安装包版本的不确定性,使用本地缓存。
这在npm的后续版本中也进行了改进,使用了增加lock文件来确定安装包的版本。
直到pnpm出现,利用硬链接和符号链接来避免复制所有本地缓存源文件,不用每个项目复制一堆包。
反正比起npm,yarn各种好、快、省。
其实java早早的用maven做到了么,为啥不能借鉴呢?其实pnpm这样的方式比较取巧,但是node领域一个很大进步。
安装pnpm
npm install -g pnpm
主要install子命令的各种用法 :
Command | Meaning |
---|---|
pnpm i sax | npm package (save to dependencies ) |
pnpm i -D sax | save to devDependencies |
pnpm i -O sax | save to optionalDependencies |
pnpm i -P sax | save to dependencies |
pnpm i sax@next | Specify tag next |
pnpm i sax@3.0.0 | Specify version 3.0.0 |
pnpm i sax@">=1 <2.0" | Specify version range |
pnpm i user/repo | GitHub |
pnpm i user/repo#master | GitHub |
pnpm i user/repo#semver:^2.0.0 | GitHub |
pnpm i github:user/repo | GitHub |
pnpm i gitlab:user/repo | GitHub |
pnpm i /path/to/repo | Absolute path |
pnpm i ./archive.tgz | Tarball |
pnpm i https://site.com/archive.tgz | Tarball via HTTP |
由于node_modules目前采用了扁平的包依赖管理,所有在众多的依赖包项目中漏掉某些依赖,但依然能正常运行。
这导致了有的项目使用pnpm安装后会缺少包,导致无法运行 。解决办法有3种:
1、把缺失的包添加到本项目的依赖中,用pnpm i xxx就可以
2、要么使用一个pnpmfile.js对这样的包进行补充说明
3、还用flat node_modules 结构包结构,用
pnpm install --shamefully-flatten
可耻就可耻吧,简单好用就行呗。
参考:
- pnpm installation
- 一文看懂npm、yarn、pnpm之间的区别
- Benchmarks of JavaScript Package Managers
- pnpm does not work with YOUR-PROJECT-HERE
最后
以上就是可爱小馒头为你收集整理的用pnpm取代npm进行包管理的全部内容,希望文章能够帮你解决用pnpm取代npm进行包管理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复