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 注册表私有模块的应用。
在 Pages 项目的 Settings(设置) > Environment variables(环境变量) 中,为 Production(生产) 和 Preview(预览) 环境添加名为 NPM_TOKEN 的新 环境变量,并将 创建的只读令牌 粘贴为其值。
默认情况下,npm 查找名为 NPM_TOKEN 的环境变量,由于你未定义 自定义注册表端点,假定使用 npm 注册表。只要你和队友使用已获私有包访问权限的 npm 账户完成身份验证(参见 npm whoami 和 npm 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 文件导致本地开发不再工作,需要添加一些额外更改:
-
将符合 Pages 要求的
.npmrc文件重命名为.npmrc.pages。该文件应引用环境变量。 -
恢复先前的
.npmrc文件——之前对你和队友有效的版本。 -
在 Cloudflare 仪表板中,前往 Workers & Pages 页面。
Go to Workers & Pages ↗ -
选择你的 Pages 项目。
-
前往 Settings(设置) > Environment variables(环境变量),添加名为
NPM_CONFIG_USERCONFIG↗ 的新 环境变量,并将其值设为/opt/buildhome/repo/.npmrc.pages。若.npmrc.pages文件不在项目根目录,请相应调整此路径。