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

时间:2015-05-08 01:04:46

标签: node.js npm

我正在使用两个NPM帐户:公共帐户和私有帐户。我如何设置它以便每次在其他帐户上发布模块时都不需要npm login

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

2 个答案:

答案 0 :(得分:13)

我知道我在回答这个问题时已经迟到了(好吧,已经很晚了),但是我必须快速接连地向私人和公共注册机构发布同样的问题。

  

我发现此问题的最佳解决方案是在用户级别提供第二个或第三个配置文件。这就是我的$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

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

  

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

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

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

答案 1 :(得分:3)

这就是我用4种不同的NPM登录解决它的方法。

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

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

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

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

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

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

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

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

      专业提示

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