# GitHub Packages 快速入门

使用 GitHub Packages 发布到 GitHub Actions。

> \[!NOTE]
> GitHub Enterprise Server 目前不支持 GitHub 托管的运行器。

## 简介

在本指南中，你将创建一个 GitHub Actions 工作流来测试代码，然后将其发布到 GitHub Packages。

## 发布您的软件包

1. 在GitHub上创建一个新仓库，并添加适用于 Node 的`.gitignore`。 有关详细信息，请参阅“[创建新仓库](/zh/enterprise-server@3.22/repositories/creating-and-managing-repositories/creating-a-new-repository)”。

2. 将存储库克隆到本地计算机。

   ```shell
   git clone https://YOUR-HOSTNAME/YOUR-USERNAME/YOUR-REPOSITORY.git
   cd YOUR-REPOSITORY
   ```

3. 创建 `index.js` 文件，并添加一个基本警报，提示“你好，世界！”

   ```javascript copy
   console.log("Hello, World!");
   ```

4. 使用 `npm init` 初始化 npm 包。 在包初始化向导中，输入名称为 *`@YOUR-USERNAME/YOUR-REPOSITORY`* 的包，并将测试脚本设置为 `exit 0`。 这将生成一个 `package.json` 文件，其中包含有关包的信息。

   ```shell
   $ npm init
     ...
     package name: @YOUR-USERNAME/YOUR-REPOSITORY
     ...
     test command: exit 0
     ...
   ```

5. 运行 `npm install` 以生成 `package-lock.json` 文件，然后将更改提交并推送到 GitHub。

   ```shell
   npm install
   git add index.js package.json package-lock.json
   git commit -m "initialize npm package"
   git push
   ```

6. 创建 `.github/workflows` 目录。 在此目录中，创建名为 `release-package.yml` 的文件。

7. 将以下 YAML 内容复制到 `release-package.yml` 文件中，并将 `YOUR-HOSTNAME` 替换为您的企业名称。

   ```yaml copy
   name: Node.js Package

   on:
     release:
       types: [created]

   jobs:
     build:
       runs-on: ubuntu-latest
       steps:
         - uses: actions/checkout@v6
         - uses: actions/setup-node@v7
           with:
             node-version: 20
         - run: npm ci
         - run: npm test

     publish-gpr:
       needs: build
       runs-on: ubuntu-latest
       permissions:
         packages: write
         contents: read
       steps:
         - uses: actions/checkout@v6
         - uses: actions/setup-node@v7
           with:
             node-version: 20
             registry-url: https://npm.YOUR-HOSTNAME.com/
         - run: npm ci
         - run: npm publish
           env:
             NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
   ```

8. 告诉 NPM 使用以下方法之一发布包的范围和注册表：
   * 在根目录中创建包含以下内容的 `.npmrc` 文件，为存储库添加 NPM 配置文件：

     ```shell
     @YOUR-USERNAME:registry=https://npm.pkg.github.com
     ```

   * 编辑 `package.json` 文件并指定 `publishConfig` 密钥：

     ```shell
     "publishConfig": {
       "@YOUR-USERNAME:registry": "https://npm.pkg.github.com"
     }
     ```

9. 提交更改并将其推送到 GitHub。

   ```shell
   $ git add .github/workflows/release-package.yml
   # Also add the file you created or edited in the previous step.
   $ git add .npmrc or package.json
   $ git commit -m "workflow to publish package"
   $ git push
   ```

10. 只要您的仓库中创建新版本，您创建的工作流程就会运行。 如果测试通过，则将包发布到 GitHub Packages。

    要测试这一点，请导航到存储库中的“代码”选项卡，并创建新版本。 有关详细信息，请参阅[在仓库中管理发行版](/zh/enterprise-server@3.22/repositories/releasing-projects-on-github/managing-releases-in-a-repository#creating-a-release)。

## 查看已发布的包

您可以查看您发布的所有软件包。

1. 在 GitHub 上，导航到存储库的主页面。
2. 在存储库的右侧边栏中，单击“包”。

   ![存储库页面的边栏的屏幕截图。 “包”部分用橙色框出。](/assets/images/help/package-registry/packages-from-repo.png)
3. 搜索要查看的包的名称，然后单击该名称。

## 安装已发布的包

现在，您已发布该包，您需要在各个项目中将其用作依赖项。 有关详细信息，请参阅“[在 npm 注册表上工作](/zh/enterprise-server@3.22/packages/working-with-a-github-packages-registry/working-with-the-npm-registry#installing-a-package)”。

## 后续步骤

您刚刚添加的基本工作流程在仓库中创建新版本时运行。 但这只是你可以用 GitHub Packages 做的事情的开始。 您可以通过单个工作流将包发布到多个注册表，并在不同事件（例如合并拉取请求）发生时触发工作流运行，管理容器等。

组合 GitHub Packages 并 GitHub Actions 有助于自动执行应用程序开发流程的几乎所有方面。 准备好开始了吗？ 以下是一些有用的资源，可帮助你了解关于 GitHub Packages 和 GitHub Actions 的后续步骤：

* 请参阅 [了解 GitHub Packages](/zh/enterprise-server@3.22/packages/learn-github-packages)，了解有关 GitHub Packages 的深度教程。
* ```
            有关 GitHub Actions 深度教程的 [AUTOTITLE](/actions/how-tos/write-workflows)
  ```
* 有关特定用例和示例，请参阅 [使用 GitHub Packages 注册表](/zh/enterprise-server@3.22/packages/working-with-a-github-packages-registry)