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

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

ruisui883个月前 (02-03)技术分析15

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包管理工具,是时候认识一下了!” 的相关文章

79.idea中git合并分支操作分享

文章目录前言1.fetch的操作2.合并最新代码到当前的开发分支3.解决冲突4.分支合并:5.完成代码合并总结前言git的操作在日产的工作中也非常重要,团队化的代码管理,每次如果代码被别人覆盖或者自己的代码不能提交到服务器那是灾难性的结果,本篇进行一篇分享来总结下idea中git的操作帮助java开...

程序员开发必会之git常用命令,git配置、拉取、提交、分支管理

整理日常开发过程中经常使用的git命令![送心]git配置SSH刚进入项目开发中,我们首先需要配置git的config、配置SSH方式拉取代码,以后就免输入账号密码了!# 按顺序执行 git config --global user.name "自己的账号" git config -...

身体越柔软越好?刻苦拉伸可能反而不健康 | 果断练

坐下伸直膝盖,双手用力向前伸,再用力……比昨天前进了一厘米,又进步了! 这么努力地拉伸,每个人都有自己的目标,也许是身体健康、线条柔美、放松肌肉、体测满分,也可能为了随时劈个叉,享受一片惊呼。 不过,身体柔软,可以享受到灵活的福利,也可能付出不稳定的代价,并不是越刻苦拉伸越好。太硬或者太软,都不安全...

「云原生」Containerd ctr,crictl 和 nerdctl 命令介绍与实战操作

一、概述作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使用,只是大部分时候我们因熟悉Docker,在部署集群时采用了默认的dockershim。在V1.24起的版本的kubelet就彻底移除了dockershim,改为默认使用Conta...

vue v-html动态生成的html怎么加样式/事件

1、动态生成的html,样式不生效//html 布局 <view v-html="html"> {{html}} </view> //动态生成的元素 <view class="btngo" @tap="handleLink...

VUE-router

七.Vue-router1、什么是vue-routervue-router是vue.js官方路由管理器。vue的单页应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。传统页面切换是用超链接a标签进行切换。但vue里是用路由,因为我们用Vue做的都是单页应用,就相当于只有一个主的i...