私有模块和仓库
在某些情况下,您可能希望加载位于私有存储库中的远程模块,例如 GitHub 上的私有存储库。
Deno 支持在请求远程模块时发送承载令牌。承载令牌是与 OAuth 2.0 一起使用的主要类型的访问令牌,并且被托管服务(例如 GitHub、GitLab、Bitbucket、Cloudsmith 等)广泛支持。
DENO_AUTH_TOKENS 跳转到标题
Deno CLI 将查找名为 DENO_AUTH_TOKENS
的环境变量,以确定在请求远程模块时应使用哪些身份验证令牌。环境变量的值采用n个令牌以分号 (;
) 分隔的形式,其中每个令牌是
-
格式为
{token}@{hostname[:port]}
的承载令牌,或者 -
格式为
{username}:{password}@{hostname[:port]}
的基本身份验证数据
例如,deno.land
的单个令牌看起来像这样
或者
DENO_AUTH_TOKENS=username:[email protected]
多个令牌看起来像这样
[email protected];[email protected]:8080;username:[email protected]
当 Deno 去获取远程模块时,如果主机名与远程模块的主机名匹配,Deno 将将请求的 Authorization
标头设置为 Bearer {token}
或 Basic {base64EncodedData}
的值。这允许远程服务器识别请求是与特定已认证用户绑定的授权请求,并提供对服务器上适当资源和模块的访问。
GitHub 跳转到标题
要访问 GitHub 上的私有存储库,您需要为自己颁发一个个人访问令牌。您可以通过登录 GitHub 并进入设置 -> 开发者设置 -> 个人访问令牌来完成此操作
然后,您将选择生成新的令牌,并为您的令牌提供描述和适当的访问权限
创建完成后,GitHub 将仅显示一次新令牌的值,您需要在环境变量中使用该值
为了访问包含在 GitHub 上的私有存储库中的模块,您需要在作用域为 raw.githubusercontent.com
主机名的 DENO_AUTH_TOKENS
环境变量中使用生成的令牌。例如
这应该允许 Deno 访问颁发令牌的用户有权访问的任何模块。
当令牌不正确或用户无权访问该模块时,GitHub 将发出 404 Not Found
状态,而不是未授权状态。因此,如果您在命令行中收到有关您尝试访问的模块未找到的错误,请检查环境变量设置和个人访问令牌设置。
此外,deno run -L debug
应该打印有关从环境变量中解析的令牌数量的调试消息。如果它认为任何令牌格式错误,它将打印错误消息。出于安全目的,它不会打印有关令牌的任何详细信息。