如何在本地设置多个NPM用户?

Vas*_*iak 15 node.js npm

我使用两个NPM账户:公共账户和私人账户.我如何设置它以便npm login每次我在不同的帐户上发布模块时都不需要?

UPD:寻找NPM内置解决方案,所以没有shell脚本等

Iai*_*eid 14

我知道我回答这个问题有点晚了(好吧,超级晚了),但我刚刚遇到同样的问题,同时必须快速连续地向私人和公共注册机构发布.

我发现此问题的最佳解决方案是在用户级别提供第二个或第三个配置文件.这就是我的$HOME目录当前的样子:

Admins-iMac% ls -la ~/.npmrc* -rw------- 1 moi staff 52 10 Apr 14:48 /Users/moi/.npmrc -rw-r--r-- 1 moi staff 498 10 Apr 14:52 /Users/moi/.npmrc-private-reg -rw-r--r-- 1 moi staff 70 10 Apr 14:48 /Users/moi/.npmrc-public-reg

在"私有"和"公共"dotfiles中,我分别有Artifactory和npmjs.org用户设置,但除此之外它们都是空的.我的默认NPM配置文件内部也很少,因为我的大多数配置都位于一个全局文件中,其背后的原因除了这个问题之外......

当我将模块发布到任一注册表时,我只是将该--userconfig选项与我希望进行身份验证的文件路径一起传递.

例如,我只是轻松地将包推送到公共NPM注册表,如下所示:

npm publish --userconfig ~/.npmrc-public-reg


  • npm-config:https://docs.npmjs.com/misc/config#npmrc-files


Vas*_*iak 12

这就是我解决具有4个不同NPM登录名的方式。

  1. 在每个项目.gitignore.npmignore对于NPM模块)中,添加以下行:.npmrc。这将确保您永远不会提交(或发布).npmrc文件。
  2. 在每个项目的文件夹中,创建.npmrc包含以下内容的文件:(//registry.npmjs.org/:_authToken=11111111-1111-1111-1111-111111111111 将GUID替换为实际的NPM身份验证令牌,例如,您可以从中获取它~/.npmrc

npmCLI将查找在当前文件夹.npmrc文件(或任何文件夹),将使用它的权威性。

结果,所有npm命令均按原样运行,无需传递--userconfig任何内容。


除上述内容外,您还可以在计算机/笔记本电脑上使用默认的 NPM令牌。

  1. 确保其中.npmrc不存在.gitignore(对于大多数项目来说很常见)。
  2. .npmrc在项目的根文件夹中创建文件。放入其中://registry.npmjs.org/:_authToken=${NPM_TOKEN}。这将使npm使用NPM_TOKENenv。变种 而npm将中止,如果这样的ENV。变种 找不到。
  3. 提交并推送该文件。(是的,认真的。)
  4. 确保您的外壳NPM_TOKEN设置了环境变量。例如NPM_TOKEN=11111111-1111-1111-1111-111111111111。我有它在我的~/.bash_profile

结果,提交了该文件的所有项目都将使用环境变量NPM_TOKEN进行npm auth。

结果,所有npm命令均按原样运行,无需传递--userconfig或执行任何操作。

对于CI(连续集成)来说,这是足够好的和安全的。所有CI都允许您设置环境变量。使用这种方法,您可以通过简单的环境更改NPM用户。变种 更改。


专家提示

键入npm whoami命令以检查文件夹中当前正在使用哪个令牌。

  • 这是一个很棒的解决方案,可在 2019 年运行。允许指定每个包的 npm 用户名 (2认同)