工作筆記:GitLab monorepo package registry/install
提醒:
- 完整教學請參考官方文件 npm packages in the package registry,這篇主要是給未來的我的懶人包 🌚
- 雖然發布套件的指令是
npm publish,但「將套件發布到 GitLab」的關鍵字是 package registry,故搜尋時推薦餵GitLab package registry而不是GitLab package publish
將套件發布到私人 GitLab
假設一個叫 @my-repo 的 monorepo 結構如下:
libs
tool1
tool2
apps
service1
service2
而我的目的是「只將 @my-repo/tool1 發佈到私人 GitLab」,那麽流程會是:
- 在
@my-repo的根目錄位置新增.npmrc - 在
@my-repo/tool1的package.json設定publishConfig.registry - 在
@my-repo/tool1(即libs/tool1這個資料夾)的位置執行npm publish
第一步的 .npmrc 內容如下:
//<domain_name>/api/v4/projects/<project_id>/packages/npm/:_authToken=<your_auth_token>
<domain_name>換成 GitLab 網域名稱<project_id>換成該 GitLab 專案的 id,可參考 Access a project by using the project ID 來查看<your_auth_token>換成 PAT,可參考 Create a personal access token 來取得
第二步的 package.json 設定如下:
{
"publishConfig": {
"registry": "https://<domain_name>/api/v4/projects/<project_id>/packages/npm/"
}
}
<domain_name> 和 <project_id> 的替換規則如前述。
安裝來自私人 GitLab 的套件
記得要在專案根目錄新增 .npmrc 並填入以下內容:
<package_name>:registry=https://<domain_name>/api/v4/projects/<project_id>/packages/npm/
//<domain_name>/api/v4/projects/<project_id>/packages/npm/:_authToken=<your_auth_token>
<package_name>替換成要安裝的套件的名稱(以本篇筆記為例,如果我要安裝@my-repo/tool1這個發布到私人 GitLab 的套件,這裏就填入@my-repo/tool1)<domain_name>/<project_id>/<your_auth_token>的替換規則如前述