是否使用用户身份验证令牌覆盖npm项目身份验证令牌?

是否使用用户身份验证令牌覆盖npm项目身份验证令牌?,npm,Npm,我有一个项目,其中包括一个$project/.npmrc,该项目有一个auth令牌,授予对proviat repos的只读访问权限,该权限是项目所需的: $ cat .npmrc //registry.npmjs.org/:_authToken={read-only-token} 如何用我的用户令牌覆盖该令牌,以便发布包 $ cat ~/.npmrc //registry.npmjs.org/:_authToken={my-token} 配置文件将按“优先级顺序”加载,其中项目配置具有最高优

我有一个项目,其中包括一个
$project/.npmrc
,该项目有一个auth令牌,授予对proviat repos的只读访问权限,该权限是项目所需的:

$ cat .npmrc
//registry.npmjs.org/:_authToken={read-only-token}
如何用我的用户令牌覆盖该令牌,以便发布包

$ cat ~/.npmrc
//registry.npmjs.org/:_authToken={my-token}
配置文件将按“优先级顺序”加载,其中项目配置具有最高优先级,并且似乎没有任何方法可以覆盖该优先级:

$ cd my-project/
$ npm whoami
project-readonly-user
$ cd ~
$ npm whoami
wolever
我知道可以定义
NPM_令牌
环境变量:

//registry.npmjs.org/:_authToken=${NPM_TOKEN}

但这意味着项目的每个用户都需要定义
NPM_令牌
环境变量,这是不可取的(即,因为这意味着每个用户(包括只读用户)在使用项目之前都需要定义
NPM_令牌
环境变量).

CLI参数优先于local.npmrc config,因此您可以通过以下方式覆盖它:

npm发布--注册表=https://registry.npmjs.org/:_authToken={我的代币}
您可以为发布添加npm脚本,该脚本取决于具有专用令牌的环境变量:

{
  "scripts": {
    "publish": "npm publish --registry=https://registry.npmjs.org/:_authToken=${NPM_PUBLISH_TOKEN}"
  }
}
刚刚找到了解决办法

编辑您的
.npmrc
文件:

//registry.npmjs.org/:_authToken=${NPM_TOKEN}
每次要发布时(powershell):

$env:NPM_TOKEN="the-token"
npm publish --access public --registry https://registry.npmjs.org