管理 npm 软件包

本页面介绍了以下任务:

  • 查看和删除软件包与软件包版本
  • 查看、创建、更新和删除标记

软件包管理目前为 Alpha 版。它仅适用于 Alpha 版用户,可能不包含容器管理可用的所有特性。若要申请 Alpha 版,请填写注册表单

准备工作

  1. 如果目标代码库不存在,请创建新代码库
  2. 验证您是否拥有访问代码库所需的权限
  3. 为 npm 配置身份验证
  4. (可选)为 gcloud 命令配置默认值

添加软件包

您只能发布一次特定版本的软件包。这是 npm 限制,用于确保已发布的软件包版本的内容始终相同。因此,您不能:

  • 通过将软件包版本再次发布到代码库来覆盖此版本
  • 从代码库中移除软件包或其版本,然后发布具有相同名称和版本号的软件包

如需添加软件包,请执行以下操作:

  1. 确保 package.json 中的软件包名称包含为您的代码库配置的范围。以下示例展示了范围为 dev-repo 的软件包。

    "name": "@dev-repo/my-package"
    
  2. 请刷新用于连接到代码库的访问令牌。google-artifactregistry-auth 是一个客户端库,用于更新 Artifact Registry 代码库的凭据。

    如需刷新凭据,请使用以下任一方法:

    • 直接使用 npx 来刷新访问令牌。如果您使用的是 npm 5.2.0 或更高版本,则凭据将包含在 npm 中。

      1. 确保用于连接到公共 npm 注册表的凭据位于用户的 npm 配置文件 ~/.npmrc 中。

      2. 在 npm 项目上方的文件夹中运行以下命令。

      npx google-artifactregistry-auth PROJECT-NPMRC
      

      其中 PROJECT-NPMRC 是项目目录中 .npmrc 文件的路径。

      您必须在项目目录之外运行该命令,以便 npx 使用 ~/.npmrc 中的公共 npm 注册表凭据来下载 google-artifactregistry-auth

    • 将脚本添加到项目的 package.json 文件中。

      "scripts": {
        "artifactregistry-login": "npx google-artifactregistry-auth"
      }
      
      npm run artifactregistry-login PROJECT-NPMRC --registry https://registry.npmjs.org/
      

      其中 PROJECT-NPMRC 是项目目录中 .npmrc 文件的路径。

    • 对于低于 5.2.0 的 npm 版本,请执行以下步骤:

      1. 运行以下命令:
      npm install google-artifactregistry-auth --save-dev --registry https://registry.npmjs.org/
      
      1. 将其添加到身份验证脚本中:
      "scripts": {
          "artifactregistry-login": "./node_modules/.bin/artifactregistry-auth",
      }
      

      运行脚本

      npm run artifactregistry-login PROJECT-NPMRC
      

      其中 PROJECT-NPMRC 是项目目录中 .npmrc 文件的路径。

  3. 将软件包添加到代码库中。您可以使用 npmyarn 命令。

    npm publish
    
    yarn publish
    

查看软件包和版本

要使用 npmyarn 获取软件包信息,请运行相应的命令:

npm view
yarn info

如需使用 Google Cloud Console 或 gcloud 查看软件包和软件包版本,请执行以下操作:

控制台

  1. 在 Google Cloud Console 中打开代码库页面。

    打开代码库页面

  2. 在代码库列表中,点击相应代码库。

    软件包页面列出代码库中的软件包。

  3. 点击一个软件包以查看它的版本。

gcloud

如需列出代码库中的软件包,请运行以下命令:

gcloud artifacts packages list [--repository=REPOSITORY] [--location=LOCATION]

其中

  • REPOSITORY 是代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。
  • LOCATION 是单区域或多区域位置。使用此标志可查看特定位置的代码库。如果您配置了默认位置,则可以省略此标志以使用默认值。

如需查看软件包的版本,请运行以下命令:

gcloud artifacts versions list --package=PACKAGE [--repository=REPOSITORY] [--location=LOCATION]

其中

  • PACKAGE 是软件包的 ID 或软件包的完全限定标识符。
  • REPOSITORY 是代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。
  • LOCATION 是单区域或多区域位置。使用此标志可查看特定位置的代码库。如果您配置了默认位置,则可以省略此标志以使用默认值。

标记软件包

您可以查看、添加、更新和删除标记。

查看标记

如需查看软件包的标记,请执行以下操作:

控制台

  1. 在 Cloud Console 中打开 代码库页面。

    打开代码库页面

  2. 点击软件包以查看版本和关联的标记。

  3. 选择要标记的软件包版本。

  4. 在所选版本的行中,点击更多操作 (更多操作),然后点击修改标记

  5. 在字段中输入新标记,然后点击保存

gcloud

运行以下命令:

gcloud artifacts tags list --package=PACKAGE \
[--repository=REPOSITORY] [--location=LOCATION]

其中

  • PACKAGE 是代码库中的软件包名称。
  • REPOSITORY 是代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。
  • LOCATION 是单区域或多区域位置。使用此标志可查看特定位置的代码库。如果您配置了默认位置,则可以省略此标志以使用默认值。

例如,如需查看默认位置的 my-repo 代码库中软件包 my-package 的标记,请运行以下命令:

gcloud artifacts tags list --package=my-pkg --repository=my-repo

创建标记

您可以为特定版本的软件包创建标记。

如需标记代码库中的现有映像,请执行以下操作:

控制台

  1. 在 Cloud Console 中打开 代码库页面。

    打开代码库页面

  2. 点击软件包以查看它的版本。

  3. 选择要标记的软件包版本。

  4. 在所选版本的行中,点击更多操作 (更多操作),然后点击修改标记

  5. 在字段中输入新标记,然后点击保存

gcloud

运行以下命令:

gcloud artifacts tags create TAG --package=PACKAGE \
version=VERSION [--location=LOCATION] [--repository=REPOSITORY]

其中

  • TAG 是您要应用到软件包的标记。
  • PACKAGE 是代码库中的软件包名称。
  • VERSION 是您要标记的软件包的版本。
  • LOCATION 是单区域或多区域位置。使用此标志可查看特定位置的代码库。如果您配置了默认位置,则可以省略此标志以使用默认值。
  • REPOSITORY 是代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。

例如,如需为默认位置的 my-repo 代码库中 my-package 软件包的版本 1.0.0 创建 release-candidate 标记,请运行以下命令:

gcloud artifacts tags create release-candidate --version=1.0.0 \
--package=my-pkg --repository=my-repo

更新标记

您可以更改与软件包版本关联的标记。

如需更改现有标记,请执行以下操作:

控制台

  1. 在 Cloud Console 中打开 代码库页面。

    打开代码库页面

  2. 点击软件包以查看它的版本。

  3. 选择含有要更改的标记的软件包版本。

  4. 在所选版本的行中,点击更多操作 (更多操作),然后点击修改标记

  5. 修改标记,然后点击保存

gcloud

运行以下命令:

gcloud artifacts tags update TAG --package=PACKAGE \
version=VERSION [--location=LOCATION] [--repository=REPOSITORY]

其中

  • TAG 是您要应用到软件包的标记。
  • PACKAGE 是代码库中的软件包名称。
  • VERSION 是您要标记的软件包的版本。
  • LOCATION 是单区域或多区域位置。使用此标志可查看特定位置的代码库。如果您配置了默认位置,则可以省略此标志以使用默认值。
  • REPOSITORY 是代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。

例如,如需在默认位置的 my-repo 代码库中将 my-package 软件包的版本 1.0.0 的标记更改为 production,请运行以下命令:

gcloud artifacts tags update production --version=1.0.0 \
--package=my-pkg --repository=my-repo

取消对软件包版本的标记

您可以从软件包版本中移除现有标记。

如需移除标记,请执行以下操作:

控制台

  1. 在 Cloud Console 中打开 代码库页面。

    打开代码库页面

  2. 点击映像以查看映像的版本。

  3. 选择要取消标记的映像版本。

  4. 在所选版本的行中,点击更多操作 (更多操作),然后点击修改标记

  5. 删除标记,然后点击保存

gcloud

运行以下命令:

gcloud artifacts tags delete TAG --package=PACKAGE \
[--location=LOCATION] [--repository=REPOSITORY]

其中

  • TAG 是您要应用到软件包的标记。
  • PACKAGE 是代码库中的软件包名称。
  • LOCATION 是单区域或多区域位置。使用此标志可查看特定位置的代码库。如果您配置了默认位置,则可以省略此标志以使用默认值。
  • REPOSITORY 是代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。

例如,如需从默认位置的 my-repo 代码库中的 my-package 软件包中移除 release-candidate 标记,请运行以下命令:

gcloud artifacts tags delete release-candidate --package=my-pkg \
--repository=my-repo

安装软件包

如需从 npm 代码库安装软件包,请使用 npm installyarn add 命令。

npm install @SCOPE/PACKAGE
yarn add @SCOPE/PACKAGE

其中

  • SCOPE 是与代码库关联的范围
  • PACKAGE 是代码库中的软件包名称

如果您的 npm 代码库没有配置范围,请在命令中省略范围:

npm install PACKAGE
yarn add PACKAGE

package.json 中将软件包指定为依赖项时,请务必添加代码库的范围。以下示例展示了名为 my-package 的软件包的 @dev-repo 范围。

"dependencies": {
  "@dev-repo/my-package": ">=1.0.0"
}

删除软件包

在删除软件包或软件包版本之前,请确认您已在其中告知或解决任何重要依赖项。

软件包版本发布后,即使您删除了版本,也无法重新发布具有相同名称和版本组合的软件包。这是 npm 限制,用于确保已发布的软件包版本的内容始终相同。

如果要鼓励用户安装更新后的软件包版本,请使用 npm deprecate 命令将旧版软件包标记为已弃用。当用户尝试安装已弃用的软件包时,Artifact Registry 会返回弃用警告。

如需删除软件包,请按如下所述操作:

控制台

  1. 在 Google Cloud Console 中打开代码库页面。

    打开代码库页面

  2. 在代码库列表中,点击相应代码库。

    软件包页面列出代码库中的软件包。

  3. 选择要删除的软件包。

  4. 点击删除

  5. 在确认对话框中,点击删除

gcloud

运行以下命令:

gcloud artifacts packages delete PACKAGE \
[--repository=REPOSITORY] [--location=LOCATION] [--async]

其中

  • REPOSITORY 是代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。
  • LOCATION 是单区域或多区域位置。使用此标志可查看特定位置的代码库。如果您配置了默认位置,则可以省略此标志以使用默认值。
  • --async 会立即返回结果,而无需等待正在进行的操作完成。

如需删除软件包的版本,请按如下所述操作:

控制台

  1. 在 Google Cloud Console 中打开代码库页面。

    打开代码库页面

  2. 在代码库列表中,点击相应代码库。

    软件包页面列出代码库中的软件包。

  3. 点击一个软件包以查看它的版本。

  4. 选择您要删除的版本。

  5. 点击删除

  6. 在确认对话框中,点击删除

gcloud

运行以下命令:

gcloud artifacts versions delete VERSION \
[--repository=REPOSITORY] [--location=LOCATION] [--async]

其中

  • REPOSITORY 是代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。
  • LOCATION 是单区域或多区域位置。使用此标志可查看特定位置的代码库。如果您配置了默认位置,则可以省略此标志以使用默认值。
  • --async 会立即返回结果,而无需等待正在进行的操作完成。

后续步骤