关于前端:pnpm-之降本增效

40次阅读

共计 1399 个字符,预计需要花费 4 分钟才能阅读完成。

作者:京东科技 于振京

受众简介

  • 前端研发工程师

还在为 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 以上工具不做具体介绍,但以上包管理工具都有以下几个问题

  1. 安装包耗时较长,虽 yarn 做了下载优化和缓存,但与 pnpm 相比还是略逊一些
  2. 占用存储空间较大,当开发机或服务器前端工程较多时,工程越多冗余包就会越多
  3. 扁平化解决,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 installpnpm add <pkg>命令时,PNPM 会主动应用硬链接、软链接的形式治理依赖包

npm 与 pnpm 命令比照

pnpm 官网:https://pnpm.io/zh/

npm 命令pnpm 等价命令
npm installpnpm install
npm install <pkg>npm add <pkg>
npm uninstall <pkg>pnpm remove <pkg>
npm run <cmd>pnpm <cmd>

收益

上图是同一个工程应用 npm 和 pnpm 所需工夫比拟,npm 耗时 179.612 秒而 pnpm 只须要 27.3

正文完
 0