Corepack 是一個零執行時期所依賴的 Node.js 腳本,可作為 Node.js 專案和開發過程中要使用的套件管理器之間的橋樑。實際上, Corepack 允許您使用 Yarn、npm 和 pnpm,而無需安裝它們。
Corepack 預設隨所有最新 Node.js 版本一起分發。執行corepack enable
以在您的路徑上安裝所需的 Yarn 和 pnpm 二進位。
首先卸載全域 Yarn 和 pnpm 二進位(只保留 npm)。一般來說,您可以透過執行以下命令來完成此操作:
npm uninstall -g yarn pnpm# 這應該足夠了,但是如果你在沒有通過 npm 的情況下安裝了 Yarn,它可能#會更乏味 - 例如,你可能還需要運行 `brew uninstall yarn`。
然後安裝Corepack:
npm install -g 核心包
我們確實承認使用 npm 安裝 Corepack 的諷刺性和開銷,這至少是首選選項是使用與 Node.js 本身一起分發的 Corepack 版本的部分原因。
請參閱CONTRIBUTING.md
。
只需像平常一樣使用套件管理器即可。在 Yarn 專案中執行yarn install
,在 pnpm 專案中pnpm install
,在 npm 專案中npm
。 Corepack 將捕獲這些調用,並根據情況:
如果本機專案配置為您正在使用的套件管理器,Corepack 將下載並快取最新的相容版本。
如果本機專案配置為不同的套件管理器,Corepack 將要求您使用正確的套件管理器再次執行該命令 - 從而避免安裝工件的損壞。
如果本機專案沒有為任何套件管理器配置,Corepack 將假定您知道自己在做什麼,並將使用已固定為「已知良好版本」的任何套件管理器版本。檢查相關部分以了解更多詳細資訊。
使用package.json
中的packageManager
欄位設定套件的管理器:
{「packageManager」:「[email protected]+sha224.953c8233f7a92884eee2de69a1b92d1f2ec1655e66d08071ba9a02fa」}
這裡, yarn
是套件管理器的名稱,在版本3.2.3
中指定,以及該版本的 SHA-224 雜湊值以進行驗證。 packageManager@xyz
是必要的。哈希值是可選的,但強烈建議將其作為安全措施。套件管理器允許的值為yarn
、 npm
和pnpm
。
您也可以提供.js
檔案(將被解釋為 CommonJS 模組)或.tgz
檔案(將被解釋為套件, package.json
的"bin"
欄位將用於確定要在檔案中使用哪個檔案)。
{「packageManager」:「yarn@https://registry.npmjs.org/@yarnpkg/cli-dist/-/cli-dist-3.2.3.tgz#sha224.16a0797d1710d1fb7ec40ab5c3801b68370a61710d1fb7ec40ab5c3801b68370a612abad
當在未列出受支援的套件管理器的專案中執行 Corepack 時,它將預設使用一組已知的良好版本。
如果所要求的套件管理器沒有已知的良好版本,Corepack 會在 npm 註冊表中尋找最新的可用版本並將其快取以供將來使用。
可以使用corepack install -g
在系統範圍內更新已知的良好版本。當 Corepack 在與已知良好版本相同的主線上下載給定套件管理器的新版本時,它會預設自動更新它。
該實用程式命令將在下一節中詳細介紹。
您可以在建立容器映像時使用網絡,在這種情況下,您只需執行corepack pack
以確保您的映像包含指定套件管理器的「最後一次正確」版本。
或者您要將專案發佈到網路不可用的系統,在這種情況下,您將先從本機電腦(使用corepack pack -o
)產生套件管理器存檔,然後將其儲存在容器能夠存取的位置(例如在您的存儲庫中)。之後,只需執行corepack install -g --cache-only
即可設定快取。
corepack [@] [... args]
此元命令運行本機資料夾中指定的套件管理器。您可以使用它來強制安裝以給定版本運行,這在尋找回歸時非常有用。
請注意,這些命令仍然檢查是否為給定的套件管理器配置了本機專案(即,您將無法在packageManager
欄位引用pnpm
專案上執行corepack yarn install
)。
corepack cache clean
清除本機COREPACK_HOME
快取目錄。
corepack cache clear
清除本機COREPACK_HOME
快取目錄。
corepack enable [... name]
選項 | 描述 |
---|---|
--install-directory | 將墊片新增至指定位置 |
此命令將偵測 Corepack 的安裝位置,並在其旁邊為每個指定的套件管理器(如果不帶參數呼叫該命令,則為所有套件管理器)建立墊片。請注意,除非明確要求,否則不會安裝 npm 墊片,因為 npm 目前透過其他方式與 Node.js 一起分發。
如果corepack
二進位檔案所在的檔案系統是唯讀的,則此指令將會失敗。解決方法是將二進位檔案新增為 shell 設定檔中的別名(例如在~/.bash_aliases
中):
別名紗線=“corepack紗線”別名yarnpkg=“核心包yarnpkg”別名pnpm=“核心包pnpm”別名pnpx=“核心包pnpx”別名npm=“核心包npm”別名npx=“核心包npx”
在 Windows PowerShell 上,您可以使用$PROFILE
自動變數新增函數:
echo "功能紗線{ corepack紗線`$args}" >> $PROFILEecho "功能yarnpkg { corepack紗線pkg`$args}" >> $PROFILEecho "功能pnpm { corepack pnpm `$args }" >> $PROFILEecho "功能pnpx { corepack pnpx `$args }" >> $PROFILEecho "函數 npm { corepack npm `$args }" >> $PROFILEecho "函數 npx { corepack npx `$args }" >> $PROFIargLE
corepack disable [... name]
選項 | 描述 |
---|---|
--install-directory | 將墊片移至指定位置 |
此命令將檢測 Node.js 的安裝位置並從那裡刪除墊片。
corepack install
下載並安裝本機專案中設定的套件管理器。此命令不會變更從專案外部執行套件管理器時使用的全域版本(如果您希望這樣做,請使用「-g,--global」標誌)。
corepack install <-g,--global> [... name[@]]
安裝選定的套件管理器並將其安裝在系統上。
在定義packageManager
欄位的專案之外呼叫各自的二進位檔案時,如此安裝的套件管理器將被配置為新的預設值。
corepack pack [... name[@]]
選項 | 描述 |
---|---|
--json | 列印輸出資料夾而不是日誌 |
-o,--output | 產生存檔的路徑 |
下載選定的套件管理器並將它們儲存在適合與corepack install -g
一起使用的 tarball 中。
corepack use ]>
執行時,此命令將檢索與提供的描述符相符的最新版本,將其指派給專案的 package.json 文件,並自動執行安裝。
corepack up
檢索本機專案中使用的套件管理器的目前主要發行版的最新可用版本,並更新專案以使用它。
與corepack use
不同,此命令不採用套件管理器名稱或版本範圍,因為它將始終從同一主行中選擇最新的可用版本。如果您需要升級到新的專業,請使用明確的corepack use {name}@latest
呼叫(或簡單地corepack use {name}
)。
COREPACK_DEFAULT_TO_LATEST
可以設定為0
以指示 Corepack 不要在遠端註冊表中尋找所選套件管理器的最新版本,並且在下載相同主線的新版本時不更新「最後一次正確」版本。
COREPACK_ENABLE_AUTO_PIN
可以設定為0
以防止 Corepack 在偵測到本機套件未列出它時更新packageManager
欄位。一般來說,我們建議始終列出packageManager
欄位(您可以透過corepack use [name]@[version]
輕鬆設定),因為它確保您的專案安裝始終是確定性的。
COREPACK_ENABLE_DOWNLOAD_PROMPT
可以設定為0
以防止 Corepack 在需要下載軟體時顯示 URL,也可以設定為1
以顯示 URL。預設情況下,當明確呼叫 Corepack 時(例如corepack pnpm …
),它被設定為0
;當隱式呼叫 Corepack 時(例如pnpm …
),它被設定為1
。當標準輸入是 TTY 且未偵測到 CI 環境時,Corepack 將在開始下載之前要求使用者輸入。
COREPACK_ENABLE_UNSAFE_CUSTOM_URLS
可以設定為1
,以允許使用自訂 URL 來載入 Corepack 已知的套件管理器( yarn
、 npm
和pnpm
)。
COREPACK_ENABLE_NETWORK
可以設定為0
以阻止 Corepack 存取網路(在這種情況下,您將負責使用corepack install -g --cache-only
來補充您將執行的專案所需的套件管理器版本)。
COREPACK_ENABLE_STRICT
可以設定為0
以防止 Corepack 在套件管理器與目前專案定義的套件管理器不對應時拋出錯誤。這意味著如果使用者正在使用目前專案中指定的套件管理器,它將使用專案的packageManager
欄位指定的版本。但是,如果使用者使用與目前專案指定的套件管理器不同的其他套件管理器,它將使用系統範圍的套件管理器版本。
COREPACK_ENABLE_PROJECT_SPEC
可以設定為0
以防止 Corepack 檢查套件管理器是否與目前專案定義的套件管理器相對應。這意味著無論在專案的packageManager
欄位中指定了什麼,它將始終使用系統範圍的套件管理器。
可以設定COREPACK_HOME
以定義 Corepack 應安裝套件管理器的位置。預設情況下,它在 Windows 上設定為%LOCALAPPDATA%nodecorepack
,在其他地方設定為$HOME/.cache/node/corepack
。
COREPACK_ROOT
對 Corepack 本身沒有功能影響;當 Corepack 向底層套件管理器提供 shell 時,它會自動在您的環境中設置,以便它們可以透過功能檢測它的存在(對於像yarn init
這樣的命令很有用)。
COREPACK_NPM_REGISTRY
設定從 npm 檢索套件管理器時所使用的登錄機碼基本 url。預設值為https://registry.npmjs.org
COREPACK_NPM_TOKEN
在連接到 npm 類型註冊表時設定 Bearer 令牌授權標頭。
COREPACK_NPM_USERNAME
和COREPACK_NPM_PASSWORD
用於在連接到 npm 類型註冊表時設定基本授權標頭。請注意,這兩個環境變數都是必需的並且為純文字。如果要傳送空密碼,請明確將COREPACK_NPM_PASSWORD
設定為空字串。
透過node-proxy-agent
支援HTTP_PROXY
、 HTTPS_PROXY
和NO_PROXY
。
COREPACK_INTEGRITY_KEYS
可以設定為空字串或0
以指示 Corepack 跳過完整性檢查,或設定為包含自訂金鑰的 JSON 字串。
執行corepack
指令時可能會出現各種網路問題。需要檢查的事項:
確保您的網路連線處於活動狀態。
確保您的請求的主機可以透過您的 DNS 解析;嘗試在 shell 中使用curl [URL]
(ipv4) 和curl -6 [URL]
(ipv6)。
檢查您的代理設定(請參閱環境變數)。
請參閱CONTRIBUTING.md
。
請參閱LICENSE.md
。