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

How to have multiple NPM users set up locally?

我正在使用两个 NPM 帐户:一个 public 一个和一个私人帐户。我如何设置它,以便我不需要每次在不同帐户上发布模块时 npm login

UPD:正在寻找 NPM 内置解决方案,因此没有 shell 脚本等

我知道我回答这个问题有点晚了(好吧,超级晚了),但我刚刚遇到了同样的问题,同时不得不快速连续地发布到私有和 public 注册中心.

The best solution I found to this issue is by having a second or third configuration file at the user level. This is how my $HOME directory looks at the moment:

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

在 "private" 和 "public" 点文件中,我分别有 Artifactory 和 npmjs.org 用户设置,但除此之外它们是空的。我的默认 NPM 配置文件里面也很少,因为我的大部分配置都位于一个全局文件中,虽然这背后的原因与这个问题无关...

When it comes to me publishing a module to either registry, I simply pass the --userconfig option with the path to the file that I wish to authenticate with.

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

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


这就是我使用 4 个不同的 NPM 登录解决问题的方法。

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

npm CLI 将在您当前的文件夹中查找 .npmrc 文件(或在任何 parent 文件夹中)并将其用于身份验证。

因此所有 npm 命令都按原样工作,不需要传递 --userconfig 或任何东西。


除上述之外,您还可以在 computer/laptop.

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

提交此文件的所有项目都将使用您的环境变量 NPM_TOKEN 进行 npm auth。

因此所有 npm 命令都按原样工作,不需要传递 --userconfig 或任何东西。

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


专业提示

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