当前位置:首页 > 技术分析 > 正文内容

新一代Nodejs包管理工具,是时候认识一下了!

ruisui884个月前 (02-03)技术分析29

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
  • 安装依赖包到devDependencies:pnpm add -D
  • 安装依赖包到optionalDependencies:pnpm add -O
  • 全局安装依赖包: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。 使用以下两种方法删除全局包:

  1. 运行 pnpm rm -g ... 列出每个全局包。
  2. 运行 pnpm root -g 找到全局目录的位置并手动删除它。

删除全局缓存的文件:

rm -rf $(pnpm store path)

卸载 pnpm cli

npm rm -g pnpm


Nodejs的出现,为前端开发增加了许多便捷;庞大的NPM包更是让前端的开发效率倍增;

如果你还在使用npm 或者 yarn,还在为node_modules占用磁盘空间发愁,赶快试试pnpm吧! 瞬间可以帮你释放一半开发磁盘空间。



说明:本文首发头条,欢迎转载!转载请标注来源即可,无需授权!创作不易,喜欢我的文章,记得添加【关注】哦!再次感谢你的支持!


? 长按【点赞】会有惊喜哦!?

~End~

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/1145.html

标签: nodejs更新
分享给朋友:

“新一代Nodejs包管理工具,是时候认识一下了!” 的相关文章

「图解」父子组件通过 props 进行数据交互的方法

1.组件化开发,经常有这样的一个场景,就是父组件通过 Ajax 获取数据,传递给子组件,如何通过 props 进行数据交互来实现,便是本图解的重点。2.代码的结构3.具体代码 ①在父组件 data 中存放数据 ms。 ②将父组件 data 中的数据 ms 绑定到子组件中的属性 ms。 ③子组件在 p...

Vue.js 组件通信的 3 大妙招

在 Vue.js 中,组件化是其核心概念之一,允许你将复杂的界面拆分成多个独立的、可复用的组件。在构建大型应用时,如何高效地在组件之间传递数据和触发事件是非常重要的。Vue.js 提供了多种方式来处理组件间的通信,下面是最常用的 3 种方式:1.父子组件通信:通过 Props 和 Events在 V...

git的几种分支模式

编写代码,是软件开发交付过程的起点,发布上线,是开发工作完成的终点。代码分支模式贯穿了开发、集成和发布的整个过程,是工程师们最亲切的小伙伴。那如何根据自身的业务特点和团队规模来选择适合的分支模式呢?本文分享几种主流 Git 分支模式的流程及特点,并给出选择建议。分支的目的是隔离,但多一个分支也意味着...

GitLab-合并请求

描述合并请求可用于在您对项目进行的其他人员之间交换代码,并轻松与他们讨论更改。合并请求的步骤步骤1-在创建新的合并请求之前,GitLab中应该有一个创建的分支。您可以参考本章来创建分支-步骤2-登录到您的GitLab帐户,然后转到“ 项目”部分下的项目 -步骤3-单击“ 合并请求”选项卡,然后单击“...

三维家-系统快捷键使用

快键件使用:通过简单的键盘+鼠标操作,快速完成搭配。1.基础快捷键1) Ctrl+V:复制选中对象第一步:鼠标左击物体,按下Ctrl+V 即可复制选中对象。2) Ctrl+G:组合多选对象第一步:按住Ctrl键多选对象--按住Ctrl+G--确定。3) Ctrl+B:解组选中对象第一步:左击选中对象...

vue 开发规范

项目运行指南(#项目运行指南)开发本地环境(#开发本地环境)开发相关插件/工具(#开发相关插件工具)开发规范(#开发规范)vue(#vue)【数据流向】(#数据流向)【慎用全局注册】(#慎用全局注册)【组件名称】(#组件名称)【组件中的 CSS】(#组件中的-css)【统一标签顺序】(#统一标签顺序...