Nodejs 是一门非常高效的后端语言,前端开发似乎已经离不开Nodejs的支持; 「NPM」 作为Nodejs御用的包管理器,一直受广大开发者的青睐,但也存在着众多问题!
在「NPM」之后又出现了 「yarn」来弥补 「NPM」的一些不足;
但是随着项目的发展,node_modules 也越来越大,随之更大的一些问题也逐渐显现出来;
比如:磁盘空间不够,多个项目的依赖包无法重用等等;
今天我们认识一个新的高效的Nodejs包管理工具「PNPM」。
NPM 与 Yarn
npm 作为nodejs 的御用管理工具;为什么还要用yarn呢?
这是因为在npm管理时期,存在了以下问题:
1、依赖版本冲突: npm 在解决依赖版本冲突方面可能存在困难,当项目依赖的不同模块需要不同的版本时,可能会出现冲突,导致项目无法正常构建或运行。
2、安装速度较慢: npm 在安装依赖时可能会比较慢,特别是当项目中存在大量的依赖项时。这可能会延长项目的启动时间,影响开发效率。
3、大量冗余依赖: npm 有时会导致项目中存在大量的冗余依赖。这些冗余依赖可能占据磁盘空间,增加项目的体积,并且可能引入潜在的安全风险。
4、全局安装带来的问题: npm 默认将包安装到全局环境中,这可能会导致不同项目之间的依赖冲突或版本不一致的问题。同时,全局安装的包也可能难以管理和更新。
5、缺乏本地依赖版本锁定: npm 默认没有提供一种简单的方式来锁定项目的依赖版本。这意味着当其他开发者或部署环境安装依赖时,可能会获得不同的版本,导致潜在的不一致性。
Yarn 解决了什么问题
在 npm 管理包问题无法解决之际,来自国际巨头公司 Facebook、Google、Exponent 和 Tilde 优秀的工程师,共同开发了包管理器 yarn,旨在解决 npm 存在的一些问题。
当然在 yarn 出现之后,依赖版本冲突、安装速度、冗余依赖以及用户体验等方面的问题都有所改善;
并且 yarn 出现之后一直被广大开发者所喜爱!
全新的包管理器 (PNPM)
虽然 yarn 的出现,解决了 Npm 的许多问题;但是还有很多问题还未彻底解决。
比如 node_modules占用磁盘问题、多项目无法共用 npm 包;
pnpm 是另一种Node包管理工具,它与 npm 和 yarn不同之处就是解决了 node包占用磁盘空间、以及多个项目可共用相同npm包等问题;
PNPM 安装
pnpm 的安装方式有很多,这里介绍一下命令行的快捷安装方式:
npm install -g pnpm
安装时需要注意一下对应的nodejs版本号。
PNPM 使用
安装完pnpm之后,就可以在全局使用它了;
由于pnpm是继 yarn 之后的 node包管理工具,所以它的一些命令语法与yarn 极其类似;
当然也是保留了 npm 的命令;
以下是 pnpm 的常用命令:
管理依赖:
- 安装依赖包到 dependencies :pnpm add <pkg>
- 安装依赖包到devDependencies:pnpm add -D <pkg>
- 安装依赖包到optionalDependencies:pnpm add -O <pkg>
- 全局安装依赖包:pnpm add -g xxx
- 安装项目全部依赖:pnpm install,别名pnpm i
- 更新依赖包:pnpm update,别名pnpm up
- 删除依赖包:pnpm remove,别名pnpm rm/uninstall/un
查看依赖:
- 查看本地安装的依赖:pnpm list,别名pnpm ls
- 查看全局安装的依赖:pnpm list --global,别名pnpm ls --g
- 检查过期的依赖:pnpm outdated
运行脚本:
- 运行自定义脚本:pnpm run xxx,别名pnpm xxx
- 运行test测试脚本:pnpm test
- 启动套件创建项目: pnpm create
- 运行start启动命令:pnpm start
PNPM 包存储
pnpm 解决的一个最大问题就是 node包的存储问题; 它与 npm、yarn 存储包的方式有所不同; pnpm 使用了 软连接 的方式,将项目的依赖包放在全局的 store中存储; 在项目的node_modules 中只保留了软连接的快捷方式;
以前的node包会被下载到当前项目的node_modules目录中;
像这样,有多少个项目就会被下载多少次;
但使用了pnpm之后,你会看见项目根目录多了一个 pnpm 的目录;里面用到的依赖包都是通过软连接的方式指向了全局缓存;
使用了 pnpm之后,项目根目录也会多一个 pnpm-lock.yaml 文件;它就像之前的yarn.lock 文件一样;来告诉 pnpm 这个项目依赖的关系;
pnpm 的命令行也相比 npm、yarn 简洁漂亮了许多。
你可以在安装完依赖之后清楚的看见依赖包的数量等信息;
PNPM 卸载
在卸载 PNPM 之前,我们需要把缓存目录的文件删除掉;
运行 pnpm ls -g。 使用以下两种方法删除全局包:
- 运行 pnpm rm -g <pkg>... 列出每个全局包。
- 运行 pnpm root -g 找到全局目录的位置并手动删除它。
删除全局缓存的文件:
rm -rf $(pnpm store path)
卸载 pnpm cli
npm rm -g pnpm
Nodejs的出现,为前端开发增加了许多便捷;庞大的NPM包更是让前端的开发效率倍增;
如果你还在使用npm 或者 yarn,还在为node_modules占用磁盘空间发愁,赶快试试pnpm吧! 瞬间可以帮你释放一半开发磁盘空间。
说明:本文首发头条,欢迎转载!转载请标注来源即可,无需授权!创作不易,喜欢我的文章,记得添加【关注】哦!再次感谢你的支持!
? 长按【点赞】会有惊喜哦!?
~End~