跳转到内容
搜索文档

安装私有包

最后更新 查看 MarkdownAgent 设置

Cloudflare Pages 支持自定义包注册表,允许在应用中包含私有依赖。虽然本演练专门介绍 npm(Node 包管理器和注册表),但相同方法可应用于其他注册表工具。

你需要在 Pages 项目的 Settings(设置) 中调整 环境变量。现有网站可随时修改,新项目也可使用这些设置初始化。无论哪种方式,更改项目设置都要等到下次部署才会生效。

注册表访问令牌

每个包注册表都应提供签发新访问令牌的方式。理想情况下,应为 Pages 专门创建新令牌,就像任何其他 CI/CD 平台一样。

使用 npm 时,可通过 其网站创建和查看令牌,或使用 npm CLI。若本地已设置 CLI 并完成身份验证,在终端运行以下命令:

# Verify the current npm user is correct
npm whoami

# Create a readonly token
npm token create --read-only
#-> Enter password, if prompted
#-> Enter 2FA code, if configured

这将生成类似 UUID 字符串的只读令牌。保存此值供后续步骤使用。

npm 注册表上的私有模块

以下部分适用于仅使用 npm 注册表私有模块的应用。

在 Pages 项目的 Settings(设置) > Environment variables(环境变量) 中,为 Production(生产)Preview(预览) 环境添加名为 NPM_TOKEN 的新 环境变量,并将 创建的只读令牌 粘贴为其值。

默认情况下,npm 查找名为 NPM_TOKEN 的环境变量,由于你未定义 自定义注册表端点,假定使用 npm 注册表。只要你和队友使用已获私有包访问权限的 npm 账户完成身份验证(参见 npm whoaminpm login),本地开发应继续正常工作。

自定义注册表端点

使用多个注册表时,项目需要定义自己的根级 .npmrc 配置文件。示例 .npmrc 文件如下:

@foobar:registry=https://npm.pkg.github.com
//registry.npmjs.org/:_authToken=${TOKEN_FOR_NPM}
//npm.pkg.github.com/:_authToken=${TOKEN_FOR_GITHUB}

此处,@foobar 作用域下的所有包指向 GitHub Packages 注册表。然后各注册表通过各自的环境变量名分配访问令牌。

Pages 项目必须为所有环境定义匹配的 环境变量。在本示例中,TOKEN_FOR_NPM 必须包含 只读 npm 令牌 值,TOKEN_FOR_GITHUB 必须包含其自己的 个人访问令牌

管理多个环境

若新的 .npmrc 文件导致本地开发不再工作,需要添加一些额外更改:

  1. 将符合 Pages 要求的 .npmrc 文件重命名为 .npmrc.pages。该文件应引用环境变量。

  2. 恢复先前的 .npmrc 文件——之前对你和队友有效的版本。

  3. 在 Cloudflare 仪表板中,前往 Workers & Pages 页面。

    Go to Workers & Pages ↗
  4. 选择你的 Pages 项目。

  5. 前往 Settings(设置) > Environment variables(环境变量),添加名为 NPM_CONFIG_USERCONFIG 的新 环境变量,并将其值设为 /opt/buildhome/repo/.npmrc.pages。若 .npmrc.pages 文件不在项目根目录,请相应调整此路径。

这篇文档对您有帮助吗?