使用 GitHub 包管理器省钱

发布: (2026年2月26日 GMT+8 04:44)
4 分钟阅读
原文: Dev.to

Source: Dev.to

前置条件

在开始之前,请确保您已经具备:

  • 一个包含 NPM 包的 GitHub 仓库。
  • 一个最小化配置的 package.json 文件。
  • 拥有创建仓库和管理包权限的 GitHub 账户。
  • 本地已安装 Node.js 和 npm 用于开发。

配置 package.json 文件

修改 package.json 文件以表明您将使用 GitHub Package Manager。将 name 字段更新为包含您的 GitHub 用户名作为作用域:

{
  "name": "@your-username/your-package",
  "version": "1.0.0",
  "description": "A private package published on GitHub Package Manager",
  "repository": {
    "type": "git",
    "url": "https://github.com/your-username/your-repo.git"
  },
  "publishConfig": {
    "registry": "https://npm.pkg.github.com/@your-username"
  }
}

请务必将 your-usernameyour-repo 替换为您实际的 GitHub 用户名和仓库名称。

在 GitHub 上生成访问令牌

要发布您的包,需要一个具备相应权限的个人访问令牌。

  1. 前往 GitHub 账户设置
  2. 创建一个 Personal Access Token (classic),并授予以下权限:
    • write:packages
    • read:packages
    • repo(如果仓库是私有的)。

将令牌保存在安全的地方,例如密码管理器中。

配置 GitHub Actions

创建一个工作流来自动化构建和发布包的过程。将以下 YAML 文件添加到仓库的 .github/workflows/publish.yml 中:

name: Build and Deploy

on:
  push:
    branches:
      - release

jobs:
  publish-gpr:
    runs-on: ubuntu-latest
    permissions:
      packages: write
      contents: read
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v1
        with:
          node-version: 20
          registry-url: https://npm.pkg.github.com/
          scope: '@your-username'
      - uses: pnpm/action-setup@v3
        with:
          version: 9.10.0
      - run: pnpm install
      - run: pnpm publish:build
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

该工作流会在您向 release 分支推送更改时触发,并自动将您的包发布到 GitHub Package Manager。

测试工作流

.github/workflows/publish.yml 文件提交并推送到 release 分支。如果一切配置正确:

  • GitHub Actions 将触发工作流。
  • 包将被发布到 GitHub Package Manager。
  • 您可以在仓库的 Packages 标签页中看到该包。

安装已发布的包

要在其他项目中使用该包,在项目根目录添加一个 .npmrc 文件,内容如下:

@your_username:registry=https://npm.pkg.github.com/
//npm.pkg.github.com/:_authToken=YOUR_TOKEN
engine-strict=true

运行 npm 命令安装包:

npm install @your-username/your-package

YOUR_TOKEN 替换为前一步创建的令牌。

结论

使用 GitHub Package Manager 发布私有 npm 包是一种成本效益高且流程简化的传统 npm 服务替代方案。通过利用 GitHub Actions,您可以实现全自动化,节省时间和资源。

这种方式消除了付费 npm 私有包的需求,并且能够无缝集成到 GitHub 生态系统中,使代码、版本管理和包都在同一个平台上统一管理。

0 浏览
Back to Blog

相关文章

阅读更多 »

紫外线

安装 bash curl -LsSf https://astral.sh/uv/install.sh | sh 安装特定的 Python 版本 bash uv python install 3.12 创建虚拟环境 ba...

Monorepo 需要什么(真实需求)

一个 monorepo 包管理器应该处理的内容: - Workspaces:多个包/应用 - 对大型仓库的快速安装 - 确定性的 lockfile,保持相同的依赖