某些组织在其私有软件包注册表中托管自己的软件包,这些注册表需要身份验证才能访问。如果您是这些组织的员工或客户,则必须使用 npm 身份验证配置作用域注册表。要进行设置,获取 npm 身份验证令牌,然后将该令牌添加到您的用户配置文件。
创建和访问 npm 身份验证令牌的过程因每个注册表提供商而异。例如,JFrog 的 Artifactory 存储库管理器使用与 npm 生成身份验证令牌不同的程序。这是一个典型过程的示例,但您需要按照特定软件包注册表提供商为您作用域注册表推荐的过程进行操作。
要从 npm 获取身份验证令牌
在您的计算机上本地安装 npm。
从终端中,输入以下命令登录注册表
$ npm login --registry <registry url>
找到并打开生成的 .npmrc 文件。
找到 _authToken
或 _auth
条目,并复制其值(请参阅下面的示例)。
根据注册表,令牌字符串可以是全局唯一标识符 (GUID)、令牌或专有格式的字符串。
这是一个包含 _authToken
属性的 .npmrc
文件示例
registry=https://example.com:1234/mylocation/
//example.com:1234/mylocation/:_authToken=<AUTH TOKEN>
这是一个包含 _auth
属性的 .npmrc
文件示例
registry=https://example.com:1234/mylocation
_auth=<AUTH TOKEN>
email=<EMAIL>
always-auth=true
使用 npmAuth
配置架构,在 .upmconfig.toml
用户配置文件 中存储每个需要身份验证的作用域注册表的令牌信息。将此信息保存到配置文件后,包管理器将在对文件中每个注册表发出的每个请求中提供您的身份验证信息。
按照以下说明将您的身份验证信息添加到用户配置文件
找到 .upmconfig.toml
用户配置文件。如果文件不存在,请创建一个空文本文件。
使用架构格式化您的身份验证信息,具体取决于您是使用 Bearer(基于令牌) 还是 Basic(Base64 加密) 身份验证机制。
[npmAuth."<REGISTRY URL>"]
<TOKEN-PROPERTY> = "<TOKEN-VALUE>"
email = "<EMAIL>"
alwaysAuth = <BOOLEAN>
下表中的信息说明了如何指定配置文件值
条目 | 描述 |
---|---|
[npmAuth."<REGISTRY-URL>"] |
必需。注册表的 URL。例如,[npmAuth."https://example.com:8081/mylocation"] 。 |
<TOKEN-PROPERTY> = "<TOKEN-VALUE>" |
必需。从 npm 注册表 生成的 身份验证令牌。这可以是 GUID、令牌或专有格式的字符串。例如,这可以是 token = "<AUTH TOKEN>" (Bearer)或 _auth = "<BASE64 TOKEN>" (Basic)。 |
可选。与注册表中用户电子邮件匹配的用户的电子邮件地址。 | |
alwaysAuth | 可选。如果软件包元数据和压缩包不在同一个服务器上,则设置为 true 。通常,您可以从 您生成的 .npmrc 文件 中复制值。 |
[npmAuth."http://localhost:8081/myrepository/mylocation"]
token = "NpmToken.2348c7ea-6f86-3dbe-86b6-f257e86569a8"
alwaysAuth = true
[npmAuth."http://localhost:4873"]
token = "eaJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyZWFsX2dyb3VwcyI6WyJwYXNjYWxsIl0sIm5hbWUiOiJwYXNjYWxsIiwiZ3JvdXBzIjpbIn"
[npmAuth."https://api.bintray.example/npm/mycompany/myregistry"]
token = "aGFzY2FsbDo4ZWIwNTM5NzBjNTI3OTIwYjQ4MDVkYzY2YWEzNmQxOTkyNDYzZjky"
email = "[email protected]"
alwaysAuth = true
这些步骤使用 Azure DevOps 作为示例,但该过程对于使用个人访问令牌 (PAT) 的任何平台来说都是类似的。
在开始之前,请安装 Node.js(如果尚未安装)。
获取您的 Azure DevOps 个人访问令牌 (PAT),并准备好用于后续步骤。如果您需要重新生成您的 PAT,请登录 Azure DevOps (https://dev.azure.com) 并转到 **用户设置** > **个人访问令牌**。有关使用 PAT 的信息,请参阅 Microsoft 文章,使用个人访问令牌。
从命令行中,运行以下命令
node -e "require('readline').createInterface({input:process.stdin,output:process.stdout,historySize:0}).question('Enter PAT> ',p => {b64=Buffer.from(p.trim()).toString('base64');console.log(b64);process.exit();})"
在 Enter PAT
提示符下,键入 email:PAT
,替换
email
为与您的 Azure DevOps 帐户关联的电子邮件以及在 .upmconfig.toml
文件中指定的电子邮件PAT
为您之前步骤中获取的 PAT该命令将返回一个 Base64 加密的字符串。复制该字符串并将其分配为 .upmconfig.toml
文件中 _auth
密钥的值。
[npmAuth."http://localhost:8081/myrepository/mylocation"]
_auth = "c19kaW5pcm9AaG90bWFpbC4jb206d3FzdzVhemU9Q=="
email = "[email protected]"
alwaysAuth = true