成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

17.6K Star! 一款快速高效的包管理工具

開發(fā)
pnpm 相較于 npm/yarn 兩個常用的包管理工具性能得到大幅提升

簡介

pnpm 是一個快速的、節(jié)省磁盤空間的包管理工具。pnpm 使用內(nèi)容尋址的文件系統(tǒng)來存儲磁盤上的所有模塊文件

項目地址

https://github.com/pnpm/pnpm

安裝

  • 使用 npm
npm install -g pnpm
  • 使用 Homebrew如果你已經(jīng)安裝了 Homebrew 軟件包管理器,則可以使用如下命令賴安裝 pnpm:
brew install pnpm

兼容性

下圖列出了以往的 pnpm 版本和對應支持的 Node.js 版本

圖片

命令

以下是與 npm 等價命令的對照表:

npm 命令

pnpm 等價命令

npm install

pnpm install

npm i

pnpm add

npm run

pnpm

特點

  • 速度快pnpm 相較于 npm/yarn 兩個常用的包管理工具性能得到大幅提升,下圖為官方提供的基準測試數(shù)據(jù)      

圖片

節(jié)省磁盤空間pnpm 內(nèi)部使用內(nèi)容尋址的文件系統(tǒng)來存儲磁盤上所有的文件

1、使用 npm/yarn 時,如果你有 100 個項目,并且所有項目都有一個相同的依賴包,那么, 你在硬盤上就需要保存 100 份該相同依賴包的副本,但是pnpm會只在一個地方寫入這部分代碼,后面使用會直接使用hard link,不會占用額外的磁盤空間

2、當這個依賴包需要更新到新版本時,并且新版本中只有一個文件有修改。pnpm 并不會重新寫入101個文件,而是保留原來的 100 個文件的 hard link,僅僅寫入那一個新增的文件到存儲中

依賴管理

pnpm 采用Hard link? (硬鏈接)和 Symbolic Link(符號鏈接)來創(chuàng)建依賴關系的嵌套結(jié)構

假設安裝foo@1.0.0?依賴于bar@1.0.0?,  pnmp 會將這兩個包硬鏈接到node_modules :

node_modules
└── .pnpm
├── bar@1.0.0
└── node_modules
└── bar -> <store>/bar
├── index.js
└── package.json
└── foo@1.0.0
└── node_modules
└── foo -> <store>/foo
├── index.js
└── package.json

一旦所有的包都被硬鏈接到node_modules ,符號鏈接就會被用來構建嵌套依賴關系圖

你可能已經(jīng)注意到了,這兩個包都硬鏈接到一個node_modules? 文件夾 ( foo@1.0.0/node_modules/foo)的子文件夾中。這是為了:

  1. 允許包能import自身。 foo  可以require('foo/package.json')或import * as package from "foo/package.json"
  2. 避免循環(huán)符號鏈接。 包的依賴關系被放置在依賴包所在文件夾中。對于 Node.js 來說,依賴項是放在在包的node_modules中還是在某個父級目錄的node-modules中是沒有區(qū)別的

下一步,安裝符號鏈接依賴。bar? 被符號鏈接到foo@1.0.0/node_modules文件夾:

node_modules
└── .pnpm
├── bar@1.0.0
└── node_modules
└── bar -> <store>/bar
└── foo@1.0.0
└── node_modules
├── foo -> <store>/foo
└── bar -> ../../bar@1.0.0/node_modules/bar

接下來,處理直接依賴關系。foo? 將被符號鏈接到node_modules?根文件夾,因為foo是項目的依賴項:

node_modules
├── foo -> ./.pnpm/foo@1.0.0/node_modules/foo
└── .pnpm
├── bar@1.0.0
└── node_modules
└── bar -> <store>/bar
└── foo@1.0.0
└── node_modules
├── foo -> <store>/foo
└── bar -> ../../bar@1.0.0/node_modules/bar

這是一個非常簡單的例子。 不過,無論依賴項的數(shù)量和依賴關系圖的深度如何,布局都會保持這種結(jié)構。

如果這時,添加qar@2.0.0為bar和foo的依賴項:

node_modules
├── foo -> ./.pnpm/foo@1.0.0/node_modules/foo
└── .pnpm
├── bar@1.0.0
└── node_modules
├── bar -> <store>/bar
└── qar -> ../../qar@2.0.0/node_modules/qar
├── foo@1.0.0
└── node_modules
├── foo -> <store>/foo
├── bar -> ../../bar@1.0.0/node_modules/bar
└── qar -> ../../qar@2.0.0/node_modules/qar
└── qar@2.0.0
└── node_modules
└── qar -> <store>/qar

如你所見,即使圖現(xiàn)在更深(foo > bar > qar),文件系統(tǒng)中的目錄深度仍然相同。

這種布局乍一看可能很奇怪,但其實它是完全兼容 Node 的模塊解析算法的!node_modules 根目錄中的包只是一個符號鏈接。require('foo')? 將執(zhí)行 node_modules/.pnpm/foo@1.0.0/node_modules/foo/indexjs? 中的文件(這里是硬鏈接),而不是 node_modules/foo/index.js 中的文件。

嚴格性

這種布局的一大好處是只有真正在依賴項中的包才能訪問。如果是使用扁平化的 node_modules 結(jié)構,程序可以訪問到一些不在package.json依賴中的包。這可以避免一些愚蠢的錯誤

責任編輯:張燕妮 來源: 開源前哨
相關推薦

2019-08-30 08:00:00

WebminWebLinux

2022-09-08 09:00:38

Ansible開源

2022-01-20 13:39:44

MySQLSequel Pro數(shù)據(jù)庫

2022-05-24 15:03:44

開源工具可視化

2024-05-09 07:34:38

SQL Server數(shù)據(jù)庫管理工具

2025-04-21 01:00:00

DbGate數(shù)據(jù)庫開源

2015-08-07 09:44:36

開源數(shù)據(jù)中心

2019-10-10 08:46:02

Docker可視化技術瀏覽器

2022-08-03 08:02:46

PDM工具Python

2022-06-28 16:30:26

管理工具Python

2022-07-01 09:17:14

Pythonpoetry工具

2022-05-09 19:19:36

Pnpm管理工具

2019-07-19 16:55:07

MySQL管理工具Orchestrato

2020-07-27 09:59:25

Kafka可視化CMAK

2013-11-12 09:59:48

2022-02-07 23:03:07

Python工具管理庫

2017-06-30 14:51:13

Linux命令行密碼管理工具

2020-04-27 08:00:00

Zenkit ToDo任務管理工具操作系統(tǒng)

2022-05-25 16:59:27

Kubectl-IcKubernetesPod

2022-07-18 15:48:43

數(shù)據(jù)庫開源工具
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 337p日本欧洲亚洲大胆鲁鲁 | 99re在线 | 亚洲精品永久免费 | 一级无毛片 | 精品久久不卡 | 成人欧美一区二区三区黑人孕妇 | 天天操天天干天天透 | 精品入口麻豆88视频 | 日本不卡一区二区三区在线观看 | 亚洲大片一区 | 国产精品久久 | 成人在线视频一区 | 羞羞的视频免费观看 | 中文字幕第100页 | 国产九九九 | 一区二区三区免费在线观看 | 欧美天堂| 亚洲成人网在线观看 | 一区视频在线免费观看 | 一区二区三区视频在线观看 | 亚洲精品免费在线 | 国产999精品久久久久久 | 国产精品日韩在线观看 | 国产精品久久 | 欧美乱码精品一区二区三区 | 激情黄色在线观看 | 99国产精品99久久久久久 | 日韩电影免费观看中文字幕 | 国产精品久久久久一区二区 | 在线播放亚洲 | 久久日本 | 久久国产高清视频 | 国产成人精品一区二 | 成人av在线播放 | 亚洲成人精品 | 亚洲97| 色婷婷亚洲一区二区三区 | 中文字幕一区二区三区精彩视频 | 日本在线一区二区 | 亚洲另类视频 | 欧美成人一区二区三区片免费 |