我是靠谱客的博主 可爱小馒头,最近开发中收集的这篇文章主要介绍用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

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

参考:

  • pnpm installation
  • 一文看懂npm、yarn、pnpm之间的区别
  • Benchmarks of JavaScript Package Managers 
  • pnpm does not work with YOUR-PROJECT-HERE

 

最后

以上就是可爱小馒头为你收集整理的用pnpm取代npm进行包管理的全部内容,希望文章能够帮你解决用pnpm取代npm进行包管理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部