“npm config set registry https://registry.npmjs.org/” 在Windows批处理文件中无法使用。

284

我在Windows 7上创建了一个名为a.bat的文件,其内容如下:

@echo off
npm config set registry https://registry.npmjs.org/

我运行了a.bat文件,但是没有效果。我发现“set”这个词是npm和bat的特殊关键字,有没有解决这个问题的方法?


430
每当有人想知道npm注册表的网址时,是否还会来到这篇文章看一下?哈哈 - kevingilbert100
12
我需要 .com 版本的注册表,即 https://registry.npmjs.com/ 而不是 https://registry.npmjs.org/ - infl3x
9
使用命令 npm config get registry 可以获取注册表(registry)的 URL。请注意,翻译时不要改变原意,并尽量让语言通俗易懂。 - Sridhar
4
不行,那只提供了当前的软件包注册表,而不是“官方”的 npm 注册表。 - Emobe
1
不得不从 https 更改为 http - kayleeFrye_onDeck
显示剩余2条评论
10个回答

291

你不应该使用 .bat 文件来更改npm注册表。 而是尝试修改 .npmrc 文件,它是 npm 的配置文件. 更改注册表的正确命令是

npm config set registry <registry url>

你可以使用 npm help config 命令查找更多相关信息,同时也要注意当你以这种方式运行 .bat 文件时的特殊权限。


也许我使用的方法不适合我的问题,但仍然感谢您的回答 :) - mopduan
3
尝试输入npm config set registry=<registry url>来设置注册表网址。 - L1fescape
13
config部分不是必需的,只需运行npm get registry以查看当前设置,然后运行npm set registry https://registry.npmjs.org/将其设置回默认值即可。请注意,不要更改原始含义。 - AlecRust
npm config set registry <local node_modules folder> 可行吗?如果我不想从互联网下载任何内容,而所有的构件都在应用程序中。 - sumit sachdeva

138
我们也可以使用registry选项运行npm install,以便可以使用多个自定义注册表URL。
npm install --registry=https://registry.npmjs.org/ 
npm install --registry=https://custom.npm.registry.com/ 

3
在设置了私有工厂的情况下运行 npm install 会导致很多问题,这个方法为我节省了几个小时。 - Mahmut C

63
你可以改变使用.bat文件,但请确保在运行调用命令之前,希望这能够帮助未来制作类似.bat命令的任何人
call npm config set registry https://registry.npmjs.org/

36

在版本4.4.1中,您可以使用:

npm config set @myco:registry=http://reg.example.com

其中 @myco 是你的包命名空间。你可以通过以下方式安装该包:

npm install @myco/my-package

参考:https://docs.npmjs.com/misc/scope


33
  1. 全局设置npm注册表

    使用以下命令修改已登录用户的.npmrc配置文件。

    npm config set registry <registry url>

    示例:npm config set registry https://registry.npmjs.org/


  1. 设置npm注册表作用域

    作用域允许将相关包分组在一起。作用域包将安装在node_modules文件夹下的子文件夹中。

    例子node_modules/@my-org/packagaename

    要设置作用域注册表,请使用:npm config set @my-org:registry http://example.reg-org.com

    要使用作用域安装软件包,请使用:npm install @my-org/mypackage

    每当您从作用域@my-org安装任何软件包时,npm将在与作用域@my-org链接的注册表设置中搜索注册表URL。


  1. 为项目本地设置npm注册表

    要仅修改当前项目的npm注册表,请在项目的根目录中创建一个名为.npmrc的文件。

    将以下内容添加到文件中

   registry = 'https://registry.npmjs.org/'

3
谢谢!我尝试过使用 npm config set registry https://... 命令,但是当我执行 npm config get registry 命令时,它返回的是 http://...。问题在于有人提交了 .nmprc 文件,并将其中的 registry 设置为了 http://...,这个设置优先于全局配置。在阅读了您的帖子后,我花了大约 10 分钟才明白发生了什么 :) - Ruslan

21

我可能回答晚了。但如果有人需要的话,以下方法很好用,因为我已经使用了很多次。

npm config set registry=https://registry.npmjs.com/

5
在npm版本3.7.3上, npm set registry=http://whatever/ 可以设置registry的地址。

1
通过执行你的 .bat 文件,你只是为该会话设置配置而不是全局性的。当你打开另一个命令提示符并运行 npm install 时,这个配置不会为该会话设置,所以请修改你的 .bat 文件为:
@echo off
npm config set registry https://registry.npmjs.org/
@cmd.exe /K

0
2.name can no longer contain capital letters

在编程中,不要使用大写字母来命名你的包:

npm install --save uex

请使用这个:
npm install --save vuex

0

正如Gntem所指出的那样,您可能无法使用.bat文件更改npm注册表。 但我理解您需要自动化更改注册表的能力。 您可以通过将.npmrc配置放在单独的文件中(例如npmrc_jfrognpmrc_default),并让您的.bat文件执行复制任务来实现。

例如(在Windows中): 您的default_registry.bat将包含以下内容:

xcopy /y npmrc_default .npmrc

你的jfrog_registry.bat将会有

xcopy /y npmrc_jfrog .npmrc

注意:/y 可以抑制提示,以确认您是否要覆盖现有的目标文件。

这将确保所有配置属性(注册表、代理、API密钥等)都被复制到 .npmrc 中。

您可以在此处阅读更多关于xcopy的信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接