我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们

配置 NPM 用于 GitHub Package Registry

您可以配置 npm 以将包发布到 GitHub 包注册表 并将存储在 GitHub 包注册表 上的包用作 npm 项目中的依赖项。

GitHub 包注册表 目前提供有限的公开测试版。更多信息请参阅“关于 GitHub 包注册表”。

本文内容

向 GitHub 包注册表 验证

必须使用具有 read:packageswrite:packages 作用域的个人访问令牌才能通过 npm 在 GitHub 包注册表 中发布和删除公共包。 对于私有仓库,您的个人访问令牌还必须具有 repo 作用域。 更多信息请参阅“创建用于命令行的个人访问令牌”。

通过编辑 ~/.npmrc 文件或创建它(如果它不存在),可配置 npm 在推送新包时使用令牌。 它应类似于下面的示例。

//npm.pkg.github.com/:_authToken=PERSONAL-ACCESS-TOKEN

还可以使用您的用户名和个人访问令牌,通过 npm 登录。 将作用域参数中的 OWNER 替换为包含要发布包的仓库的 GitHub 用户或组织名称。

$ npm login --registry=https://npm.pkg.github.com --scope=@OWNER
> Username: USERNAME
> Password: TOKEN
> Email: PUBLIC EMAIL ADDRESS

发布包

您可以使用项目中的 .npmrc 文件或使用 package.json 中的 publishConfig 选项来设置项目的作用域映射。

注:GitHub 包注册表 只支持作用域内的 NPM 包。 作用域内的包具有名称格式 @owner/name。 作用域内的包总是以 @ 符号开头。 您可能需要更新 package.json 中的名称以使用作用域内的名称。 例如,"name": "@codertocat/hello-world-npm"

由于不支持大写字母,因此,即使您的 GitHub 用户或组织名称中包含大写字母,也必须对仓库所有者使用小写字母。

更多信息请参阅 npm 文档中的“npm 作用域”。

使用本地 .npmrc 配置包作用域

使用 .npmrc 有助于确保发布包的其他开发者不会意外地将其发布到 npmjs.org。

  1. 在项目目录中,创建或编辑 .npmrc 文件以包含下面的行。 将 OWNER 替换为包含要发布包的仓库的 GitHub 用户或组织名称。

    @OWNER:registry=https://npm.pkg.github.com/

    2. 将本地 *.npmrc* 检入 Git 仓库。
    3. 验证项目的 *package.json* 中包的名称。 `name` 字段必须包含包的作用域和名称。 例如,如果您的包名为 "test",并且要发布到 "My-org" GitHub 组织,则 *package.json* 中的 `name` 字段应为 `@my-org/test`。
    

由于不支持大写字母,因此,即使您的 GitHub 用户或组织名称中包含大写字母,也必须对仓库所有者使用小写字母。

  1. 验证项目的 package.json 中的 repository(仓库)字段。repository(仓库)字段必须与 GitHub 仓库的 URL 匹配。例如,如果仓库 URL 为 github.com/my-org/test,则 repository(仓库)字段应为 git://github.com/my-org/test.git

  2. 发布包:

$ npm publish
  1. 您可以通过以下 URL 访问您的包(使用您的 GitHub 用户或组织名称替换 OWNER,使用您的仓库名称替换 REPOSITORY):
https://github.com/OWNER/REPOSITORY/packages

使用 package.json 中的 publishConfig 配置包作用域。

您可以使用 *package.json* 文件中的 `publishConfig` 元素设置应发布包的注册表。 更多信息请参阅 npm 文档中的“[publishConfig](https://docs.npmjs.com/files/package.json#publishconfig)” 。

1. 编辑包的 *package.json* 文件并包含 `publishConfig` 条目。

  ```
    "publishConfig": {
      "registry":"https://npm.pkg.github.com/"
    },
  ```
  1. 验证项目的 package.json 中的 repository(仓库)字段。repository(仓库)字段必须与 GitHub 仓库的 URL 匹配。例如,如果仓库 URL 为 github.com/my-org/test,则 repository(仓库)字段应为 git://github.com/my-org/test.git

  2. 发布包:

$ npm publish
  1. 您可以通过以下 URL 访问您的包(使用您的 GitHub 用户或组织名称替换 OWNER,使用您的仓库名称替换 REPOSITORY):
https://github.com/OWNER/REPOSITORY/packages

将多个包发布到同一个 GitHub 仓库

发布包时,默认情况下 GitHub 包注册表 会使用包名称来确定要发布到的 GitHub 仓库。 例如,名为 `@my-org/test` 的包将被发布到 `my-org/test` GitHub 仓库。 将自动为包的版本创建 GitHub 版本和关联 Git 标记(如果尚不存在)。

如果要将多个包发布到同一个仓库,您可以在 package.json 的 `repository` 字段中包含 GitHub 仓库的 URL。 GitHub 将根据该字段匹配仓库,而不是根据包名称。

"repository" : { "type" : "git", "url": "ssh://git@github.com/OWNER/REPOSITORY.git" }, `

有关创建包的更多信息,请参阅 npm 文档中的“如何创建 Node.js 模块”。

接收包注册表事件

在发布或更新包时,您可以接收 web 挂钩事件。更多信息请参阅“GitHub 开发者文档中的 RegistryPackageEvent”。

安装包

在项目中使用来自 GitHub 的包类似于使用来自 npmjs.com 的包。 将包依赖项添加到 package.json 以指定完整的作用域内包名称。

由于不支持大写字母,因此,即使您的 GitHub 用户或组织名称中包含大写字母,也必须对仓库所有者使用小写字母。

  1. 使用 .npmrc 文件或 npm login 向 GitHub 包注册表 验证。 更多信息请参阅“向 GitHub 包注册表 验证”。

  2. 我们建议在项目中创建本地 .npmrc 以建立作用域映射。 这将确保项目中运行 npm install 的其他开发者从 GitHub 仓库获取依赖项,而不是从 npmjs.org。 添加一行到 .npmrc,将 OWNER 替换为 GitHub 用户或组织名称,其中包含要安装包的仓库。

    @OWNER:registry=https://npm.pkg.github.com/
    
  3. 将本地 .npmrc 文件检入 Git 仓库。

  4. 配置 package.json 以使用包。 例如,此 package.json@octo-org/octo-app 包用作依赖项。

    {
      "name": "@my-org/server",
      "version": "1.0.0",
      "description": "Server app that uses the @octo-org/octo-app package",
      "main": "index.js",
      "author": "",
      "license": "MIT",
      "dependencies": {
        "@octo-org/octo-app": "1.0.0"
      }
    }
    
  5. 安装包。

    $ npm install

有关在项目中使用 package.json 的更多信息,请参阅 npm 文档中的“使用 package.json”。

删除包

为避免破坏可能依赖于包的项目,GitHub 包注册表 不支持删除包或删除包的版本。在特殊情况下,例如出于法律原因或为了符合 GDPR 标准,您可以通过 GitHub 支持 申请删除包。请使用我们的联系表 和主题行 "GitHub 包注册表" 联系 GitHub 支持。

问问别人

找不到要找的内容?

联系我们