Help us learn about your current experience with the documentation. Take the survey.

单体仓库包管理工作流程

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

使用单体仓库项目作为包注册表,将包发布到多个项目中。

将包发布到项目及其子项目

要将包发布到项目及其子项目中,您必须为每个包添加配置文件。要了解如何为特定包管理器配置包,请参阅支持的包管理器

下面的示例向您展示如何使用 npm 为项目及其子项目发布包。

先决条件:

在此示例中,MyProject 是父项目。它在 components 目录中包含一个名为 ChildProject 的子项目:

MyProject/
  |- src/
  |   |- components/
  |       |- ChildProject/
  |- package.json

MyProject 发布包:

  1. 进入 MyProject 目录。

  2. 运行 npm init 初始化项目。确保包名称遵循命名约定

  3. 创建一个 .npmrc 文件。包含注册表 URL 和项目端点。例如:

    //gitlab.example.com/api/v4/projects/<project_id>/packages/npm/:_authToken="${NPM_TOKEN}"
    @scope:registry=https://gitlab.example.com/api/v4/projects/<project_id>/packages/npm/
  4. 从命令行发布您的包。将 <token> 替换为您的个人访问令牌:

    NPM_TOKEN=<token> npm publish

切勿将 GitLab 令牌(或任何令牌)直接硬编码在 .npmrc 文件或任何其他可以提交到仓库的文件中。

您应该会在项目的包注册表中看到已发布的 MyProject 包。

要在 ChildProject 中发布包,请遵循相同的步骤。.npmrc 文件的内容可以与您在 MyProject 中添加的文件相同。

发布 ChildProject 的包后,您应该会在项目的包注册表中看到该包。

将包发布到其他项目

包与 GitLab 上的项目相关联。但是,包与该项目中的代码没有关联。

例如,在为 npm 或 Maven 配置包时,project_id 设置了包发布的注册表 URL。

例如:

  • npm: https://gitlab.example.com/api/v4/projects/<project_id>/packages/npm/
  • maven: https://gitlab.example.com/api/v4/projects/<project_id>/packages/maven/

如果您将注册表 URL 中的 project_id 更改为另一个项目,您的包将发布到该项目。

通过更改 project_id,您可以将多个包与代码分开发布到一个项目中。有关更多信息,请参阅将所有包存储在一个 GitLab 项目中