pnpm 之降本增效
作者:京东科技 于振京
受众简介
前端研发工程师
还在为
npm i
安装大量依赖等待时间较长,npm
扁平化node_modules
依赖版本冲突在苦恼吗,不用苦恼pnpm
为你保驾护航
主要影响:安装依赖包的过程,假如使用的是npm install会根据package-lock.json进行软件包的安装,如果没有package-lock.json会根据package.json进行生成并对安装的依赖包扁平化处理,安装依赖包的时长由两个因素导致:
1.package.json依赖包的量
2.网速
运维工程师
前端服务器由于部署工程较多,依赖包占用磁盘空间太大,不够用怎么办,还在花钱申请扩容吗,使用
pnpm
解决你的问题
主要影响:构建前端工程时jenkin任务一般会清除服务器的node_modules然后重新安装依赖,避免构建最新分支代码缺少依赖,另外一台服务器可能会部署很多前端工程,这样就会存在不同工程中安装了相同的依赖浪费服务器磁盘空间
没用pnpm时
我们使用以下几种工具管理依赖包
npm:
nodejs
自带工具,万物之主它的诞生给前端带来了春天npx: 与
npm
同根同源,区别在于npm
将依赖安装在本地,而npx
避免了本地安装,直接对依赖包寻址执行nrm:
npm
的镜像源管理工具,使用它可以快速切换npm
源cnpm: 淘宝镜像包管理工具
yarn: facebook推出的包管理工具,曾风靡一时
由于本章的主角是pnpm以上工具不做详细介绍,但以上包管理工具都有以下几个问题
安装包耗时较长,虽yarn做了下载优化和缓存,但与pnpm相比还是略逊一些
占用存储空间较大,当开发机或服务器前端工程较多时,工程越多冗余包就会越多
扁平化处理,npm v3之后引入了扁平化机制,解决地域依赖问题,但又带来了以下几个问题
-- 依赖结构的不确定性
-- 扁平化算法本身复杂性很高,耗时较长
-- 项目中仍然可以非法访问没有声明过依赖的包 (幽灵依赖
)
用了pnpm后
我们会得到以下几个buff
加持
快速: 官网解释:比其他包管理模块快2倍
高效: 通过软硬链接寻址存储库,已达到节省磁盘的目的
严格:
pnpm
默认创建了一个非平铺的node_modules
,因此避免了相同插件不同版本引用不对称的问题,此设计完美解决了地域依赖
和幽灵依赖
认识软硬链接
对于pnpm为什么能达到【快速】和【高效】,就需要认识下软链接
和硬链接
了
硬链接
电脑文件系统中的多个文件共享一个文件存储单元
window: mklink /H aaa_hard.js aaa.js
macos: ln aaa.js aaa_hard.js
软链接
以绝对或者相对路径的形式指向其他文件目录的引用
window: mklink aaa_soft.js aaa.js
macos: ln -s aaa.js aaa_soft.js
在执行pnpm install
或pnpm add <pkg>
命令时,PNPM会自动使用硬链接、软链接的方式管理依赖包
npm与pnpm命令对比
pnpm官网:https://pnpm.io/zh/
收益
上图是同一个工程使用npm和pnpm所需时间比较,npm耗时
179.612
秒而pnpm只需要27.3
秒

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Redis集群介绍及测试思路
作者:京东零售 李磊 Redis集群介绍 Redis集群一般有四种方式,分别为:主从复制、哨兵模式、Cluster以及各大厂的集群方案。在3.0版本之前只支持单实例模式,3.0之后支持了集群方式。在3.0之前各大厂为了解决单实例Redis的存储瓶颈问题各自推出了自己的集群方案,其核心思想就是数据分片,主要有客户端分片、代理分片、服务端分片。这里咱们只介绍前三种方式:主从、哨兵、Cluster。 1、主从复制 Redis单节点的数据是存储在一台服务器上的,如果服务器出现故障,会导致数据不可用,而且读写都是在同一台服务器上,请求量大时会出现I/O瓶颈。为了避免单点故障和读写不分离,Redis提供了复制功能来实现Master中的数据向Slave数据库的同步。Master可以有多个Slave节点,Slave节点也可以有Slave节点,从节点是级联结构,如下图所示: 主从复制工作原理 一般情况下为了让数据读写分离,Master节点用来执行写操作,Slave节点提供读操作,Master执行写操作时将变化的数据同步到Slave,其工作原理如下图所示: Redis主从复制基本原理有三种:全量复制、基于...
- 下一篇
CVPR 2023 | 单阶段半监督目标检测SOTA:ARSL
本文提出了针对单阶段半监督目标检测任务的Ambiguity-Resistant Semi-supervised Learning(ARSL)算法,创新地提出了两个通用的单阶段半监督检测模块:Joint-Confidence Estimation(JCE)和Task-Separation Assignment(TSA)。JCE通过联合分类和定位任务的置信度评估伪标签质量。TSA基于教师模型预测的联合置信度将样本划分为正样本、负样本和模棱两可的候选样本,并进一步在候选样本中分别为分类、定位任务挑选潜在正样本。 背景及动机 基于深度学习的目标检测算法通常依赖大规模标注数据才能发挥出最大的威力。为了节省标注人力,降低数据标注成本,半监督目标检测(SSOD)应运而生。半监督目标检测旨在利用少量的标注数据和大量的无标注数据进行模型训练,在最新进展中,其主要依赖于Mean-Teacher框架以及Pseudo-labeling技术,即用教师模型在无标注数据上生成的伪标签(Pseudo labels)训练学生模型,再基于学生模型在时序上的权重均值来更新教师模型。图1.在基础半监督框架下,单阶段检测器(F...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2全家桶,快速入门学习开发网站教程
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启