用pnpm取代npm进行包管理

npm是Node.js内置的包管理工具。但是因对日益膨胀的包之间的依赖关系,有点跟不上发展。
虽然npm 3开始采用了扁平的依赖关系树来处理包的依赖。
面临项目中动不动就上千的包依赖,每次安装包就得好等一会,而且大量浪费磁盘空间。

虽然yarn着手解决于npm一些不足,主要是解决安装包版本的不确定性,使用本地缓存。
这在npm的后续版本中也进行了改进,使用了增加lock文件来确定安装包的版本。
直到pnpm出现,利用硬链接和符号链接来避免复制所有本地缓存源文件,不用每个项目复制一堆包。
反正比起npm,yarn各种好、快、省。

其实java早早的用maven做到了么,为啥不能借鉴呢?其实pnpm这样的方式比较取巧,但是node领域一个很大进步。

安装pnpm

npm install -g pnpm

主要install子命令的各种用法 :

CommandMeaning
pnpm i saxnpm package (save to dependencies)
pnpm i -D saxsave to devDependencies
pnpm i -O saxsave to optionalDependencies
pnpm i -P saxsave to dependencies
pnpm i sax@nextSpecify tag next
pnpm i sax@3.0.0Specify version 3.0.0
pnpm i sax@">=1 <2.0"Specify version range
pnpm i user/repoGitHub
pnpm i user/repo#masterGitHub
pnpm i user/repo#semver:^2.0.0GitHub
pnpm i github:user/repoGitHub
pnpm i gitlab:user/repoGitHub
pnpm i /path/to/repoAbsolute path
pnpm i ./archive.tgzTarball
pnpm i https://site.com/archive.tgzTarball via HTTP

由于node_modules目前采用了扁平的包依赖管理,所有在众多的依赖包项目中漏掉某些依赖,但依然能正常运行。
这导致了有的项目使用pnpm安装后会缺少包,导致无法运行 。解决办法有3种:

1、把缺失的包添加到本项目的依赖中,用pnpm i xxx就可以
2、要么使用一个pnpmfile.js对这样的包进行补充说明
3、还用flat node_modules 结构包结构,用

pnpm install --shamefully-flatten

可耻就可耻吧,简单好用就行呗。

参考:

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值