前端包管理和 corepack

2022-09-20 05:42:11 字數 3027 閱讀 9057

長期以來,node 中自帶的包管理工具只有 npm, 作為官方指定工具,使用者眾多,從體驗上來講,卻是一般。

// 檢視當前映象源

npm config get registry

// 臨時修改

npm install 軟體名 --registry

// 全域性修改

npm config set registry

如果需要頻繁切換的話可以使用開源工具 nrm,更方便一些

npm install -g nrm

nrm ls // 列出可用的映象源

npm -----

cnpm ----

taobao -- /

nj ------

rednpm --

skimdb --

// 切換映象源

nrm use cnpm

// 測試速度

nrm test taobao

// 可以增加定製的源,特別適用於新增企業內部的私有源

nrm add // 刪除源

nrm del

搭建企業內網私有源的一種方案:cnpmjs架設

cnpm 這個是國內**映象,是為解決 npm 速度太慢的問題而產生的,控制台log 也清晰許多,但是它最大的問題是會忽視 package-lock.json 檔案,也就是說 你無法鎖定小版本,可能會導致依賴版本不一致引起的 bug,防止這個隱患則需要在 package.json 中就鎖定版本,如下:

特點:超級安全 在執行**之前,yarn 會通過演算法校驗每個安裝包的完整性。

超級可靠 使用詳細、簡潔的鎖檔案格式和明確的安裝演算法,yarn 能夠保證在不同系統上無差異的工作。

離線模式 如果你以前安裝過某個包,再次安裝時可以在沒有任何網際網路連線的情況下進行。

確定性 不管安裝順序如何,相同的依賴關係將在每台機器上以相同的方式安裝。

網路效能 yarn 有效地對請求進行排隊處理,避免發起的請求如瀑布般傾瀉,以便最大限度地利用網路資源。

相同的軟體包 從 npm 安裝軟體包並保持相同的包管理流程。

網路彈性重試機制確保單個請求失敗並不會導致整個安裝失敗。

扁平模式 將依賴包的不同版本歸結為單個版本,以避免建立多個副本。

常用指令:

// 全域性安裝

npm install -g yarn

// 初始化乙個專案

yarn init

// 新增依賴包

yarn add [package]

// 公升級依賴包

yarn upgrade [package]

// 移除依賴包

yarn remove [package]

// 安裝全部依賴

yarn install (或者 yarn)

使用文件:

pnpm 的專案初衷是節約磁碟空間並提公升安裝速度

所有檔案都會儲存在硬碟上的某一位置。 當軟體包被被安裝時,包裡的檔案會硬鏈結到這一位置,而不會占用額外的磁碟空間。這允許你跨專案地共享同一版本的依賴,因此,您在磁碟上節省了大量空間,這與專案和依賴項的數量成正比,並且安裝速度要快得多。

pnpm 支援npm yarn corepack等多種安裝使用方式,比如

npm install -g pnpm

pnpm add -g pnpm // 用來公升級版本

| npm 命令 | pnpm 等效 |

| npm install | pnpm install |

| npm i | pnpm add |

| npm run | pnpm |

使用文件:

corepack是乙個實驗***,在 node.js v16.13 版本中引入,它可以指定專案使用的包管理器以及版本, 簡單來說,corepack 會成為 node.js 官方的內建 cli,用來管理『包管理工具(npm、yarn、pnpm、cnpm)』,使用者無需手動安裝,即『包管理器的管理器』。

主要作用:

由於corepack 是乙個實驗***,所以預設是沒有啟動的,需要顯式啟用,需要執行指令 corepack enable 進行啟動;在專案package.json 檔案中新增屬性 "packagemanager",比如

"packagemanager": "[email protected]"
代表當前專案只允許使用yarn 包管理器並指定1.22.15版本

// 當前應用啟用

corepack enable

// 定義包管理器

packagemanager": "[email protected]"

yarn install

// 用非宣告的包管理器,會自動攔截報錯

pnpm install

usage error: this project is configured to use yarn

因為在試驗階段,目前還有些問題待解決:

the full npm package wouldn't be included out of the box anymore (this might be an incremental move, with first a major version shipping pmm + npm, and the next one discarding npm)

npm 將慢慢從 node.js 內建包中移除,預計在下乙個大版本啟動

雖然npm 是現在node的預設包管理器,但是由於它多年來的不思進取,及種種缺陷,corepack 的出現可以說是大快人心,其最大的意義是讓 npm 不再成為唯一的官方指定工具,這將使各種包管理器在乙個更公平的地位上進行競爭,相信對開發者來說也是一件很好的事情。

liunx RPM包管理和原始碼包管理

rpm 原red hat package manager,現在是乙個遞迴縮寫 由 red hat 公司提出,被眾多 linux 發行版所採用,最大的特點就是其無需編譯,可以直接使用,但是其無法進行個人設定,開關功能。下面是rpm包示例 zip 3.0 11.el7.x86 64.rpm zip軟體包...

Bower前端包管理器

bower需要git 支援 npm install g bower 全域性安裝該模組 bower help 可以檢視命令 bower list 檢視列表 bower uninstall jquery 刪除該庫 bower install jquery 1.7.2 安裝不同版本 bower updat...

conda 環境和包 管理

建立新環境 conda create n venv name python 3.6 刪除環境 conda env remove n venv name 進入 退出環境 不知道為什麼我的,用source不行,用conda可以。即 不成功 source activate venv name source...