我正在使用两个NPM帐户:公共帐户和私有帐户。我如何设置它以便每次在其他帐户上发布模块时都不需要npm login
?
UPD:寻找NPM内置解决方案,所以没有shell脚本等
答案 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登录解决它的方法。
.gitignore
(以及NPM模块的.npmignore
)中添加以下行:.npmrc
。这将确保您永远不会提交(或发布).npmrc
文件。.npmrc
文件://registry.npmjs.org/:_authToken=11111111-1111-1111-1111-111111111111
(用实际的NPM身份验证令牌替换GUID,例如,您可以从~/.npmrc
抓取<) / LI>
醇>
npm
CLI会在当前文件夹中查找.npmrc
文件(或任何父文件夹)并将其用于身份验证。
结果所有npm
命令都按原样运行,无需传递--userconfig
或其他任何内容。
除了上述内容,您还可以在计算机/笔记本电脑上使用默认 NPM令牌。
.npmrc
中不存在.gitignore
(这对于大多数项目来说都很常见)。.npmrc
文件。把它放在里面://registry.npmjs.org/:_authToken=${NPM_TOKEN}
。这将使npm
使用NPM_TOKEN
env。变种。如果有这样的情况,npm
将会中止。变种。找不到。NPM_TOKEN
环境变量。例如。 NPM_TOKEN=11111111-1111-1111-1111-111111111111
。我在~/.bash_profile
。结果,所有提交此文件的项目将使用环境变量NPM_TOKEN
进行npm auth。
结果所有npm命令都按原样工作,不需要传递--userconfig
或任何东西。
这对于CI(持续集成)来说足够安全。所有CI都允许您设置环境变量。使用此方法,您可以使用简单的环境更改NPM用户。变种。变化
专业提示
键入npm whoami
命令以检查文件夹中当前正在使用的令牌。