工作筆記: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>
的替換規則如前述