关于程序员:node的包管理工具介绍

9次阅读

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

在前端开发中, 应用 node 作为运行时环境时, 常应用 npm 与 yarn 等作为包管理工具.

npm 与 yarn 存在的问题

NPM

对于 npm, 其外围是有一个 package.json 和 package-lock.json 文件用于记录和追踪包版本和依赖。

之前版本的 npm 的 node_modules 目录构造是

node_modules 
└─ 依赖 A 
   ├─ index.js 
   ├─ package.json 
   └─ node_modules 
       └─ 依赖 B 
       ├─ index.js 
       └─ package.json
 └─ 依赖 C 
   ├─ index.js 
   ├─ package.json 
   └─ node_modules 
       └─ 依赖 B 
       ├─ index.js 
       └─ package.json

但很显著因为这种会反复装置依赖, 还无奈共享依赖, 当初的版本是这样

node_modules 
└─ 依赖 A  
    ├─ index.js 
    ├─ package.json 
    └─ node_modules 
└─ 依赖 C   
    ├─ index.js 
    ├─ package.json 
    └─ node_modules 
└─ 依赖 B 
    ├─ index.js 
    ├─ package.json 
    └─ node_modules 

node_modules下所有的依赖都会平铺到同一层级。因为 require 寻找包的机制,如果 A 和 C 都依赖了 B,那么 A 和 C 在本人的 node\_modules 中未找到依赖 B 的时候会向上寻找,并最终在与他们同级的 node\_modules 中找到依赖包 B。这样 就不会呈现反复下载的状况。而且依赖层级嵌套也不会太深。因为没有反复的下载,所有的 A 和 C 都会寻找并依赖于同一个 B 包。天然也就解决了实例无奈共享数据的问题

这种扁平化构造尽管是解决了之前的嵌套问题,但同时也带来了另外一些问题:

  • 依赖构造的不确定性
  • 扁平化算法的复杂度减少
  • 我的项目中依然能够非法拜访没有申明过的依赖包(幽灵依赖)

yarn 的输入格局提醒以及下载速度比 npm 更快.

PNPM

次要是采纳硬链接和软链接的形式,进步了装置速度、节约了磁盘空间、防止了“依赖分身(doppelgangers)”和“幻影依赖(Phantom dependencies)”的问题。而且 yarn 反对的:平安、离线模式、更快的速度,pnpm 都反对,而且速度还要更快。

当初个别用的还是 npm 或者 yarn.

最初再介绍一些打包工具.

罕用的打包工具有 Parcel,Rollup 与 Webpack, 当初也经常应用比拟火的 Vite, 其性能也不仅限于打包.

对于利用应用 webpack 或者 Vite,对于类库应用 Rollup

参考资料

  1. pnpm/pnpm: Fast, disk space efficient package manager (github.com)
  2. Node.js (nodejs.org)
  3. Node.js 如何解决 ES6 模块 – 阮一峰的网络日志 (ruanyifeng.com)
  4. Home | Yarn – JavaScript 软件包管理器 | Yarn 中文文档 – Yarn 中文网 (yarnpkg.cn)
  5. Home | Yarn – JavaScript 软件包管理器 | Yarn 中文文档 – Yarn 中文网 (yarnpkg.cn)

本文由 mdnice 多平台公布

正文完
 0