“ npm配置设置注册表https://registry.npmjs.org/”在Windows bat文件中不起作用


191

我在Windows 7上创建a.bat,a.bat的内容是:

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

然后运行a.bat,但不起作用,我发现单词“ set”是npm和bat的特殊关键字,是否有任何方法可以解决此问题?


294
每当其他人想看看npm注册表URL是什么时,是否还有其他人会来?哈哈
kevingilbert100 '16

9
仅供参考:我需要注册表的.com版本:即https://registry.npmjs.com/而不是https://registry.npmjs.org/
infl3x

@ infl3x为什么?有什么区别?
htho

6
@ kevingilbert100 npm config get registry知道注册表URL
Sridhar

2
@Sridhar Nope。这仅提供当前设置的注册表,而不提供“官方” npm注册表。
Emobe

Answers:


222

您不应该使用.bat文件来更改npm注册表。相反,请尝试使用修改.npmrc文件npm。更改注册表的正确命令是

npm config set registry <registry url>

您可以使用npm help configcommand 查找更多信息,还可以在以.bat这种方式运行文件时以及是否运行文件时检查特权。


可能是我使用的方法不适合我的问题,但仍然感谢您的回答:)
mopduan

2
@MarcellodeSales试试npm config set registry=<registry url>
L1fescape 2014年

6
config部分不是必需的,可以运行以仅npm get registry查看您的当前并将npm set registry https://registry.npmjs.org/其设置回默认值。
AlecRust

是否可以通过npm config设置注册表<本地node_modules文件夹>。如果我不想从互联网下载任何内容,并且所有工件都在应用程序内。
sumit sachdeva

84

我们还可以运行npm install并带有registry多个自定义注册表URL的选项。

npm install --registry=https://registry.npmjs.org/ 
npm install --registry=https://custom.npm.registry.com/ 

1
我已经找了很长时间了。感谢你的分享!
falsarella

1
先生,你是救世主。
拉吉·古普塔

56

您可以使用.bat进行更改,确保先运行call命令,希望这对以后制作类似.bat命令的人有所帮助。

call npm config set registry https://registry.npmjs.org/

7
@Milad我不知道。您可能要创建一个原子计数器,并使用事件驱动的系统来更新计数器。您可以使用分布式数据库来存储计数器,以便您的计数器具有高可用性。
祈祷


15

可能我来不及回答。但是,如果有人需要它,那么跟随就可以了,因为我已经使用了很多次。

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

5

在npm版本3.7.3上

npm set registry=http://whatever/


2

通过执行.bat,您将只为该会话设置config,而不是全局设置。当您打开另一个cmd提示符并运行npm install该配置时,该会话将不会设置,因此将.bat文件修改为

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

1
  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

    每当您从scope @ my-org安装任何软件包时,npm都会在链接到scope @ my-org的注册表设置中搜索注册表URL。


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

    仅针对当前项目修改npm注册表。在项目的根文件夹中创建一个文件,如下所示:.npmrc

    在文件中添加以下内容

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


0

您可能无法使用Gntem指出的使用.bat文件更改npm注册表。但我知道您需要具有自动更改注册表的能力。您可以通过将配置放在单独的文件中来实现(例如npmrc_jfrog.npmrcnpmrc_default),然后让.bat文件执行复制任务来实现。

例如(在Windows中):您的 default_registry.bat将拥有

xcopy /y npmrc_default .npmrc

和你的 jfrog_registry.bat将有

xcopy /y npmrc_jfrog .npmrc

注意: /y禁止提示您确认要覆盖现有目标文件。

这将确保所有配置属性(注册表,代理,apiKeys等)复制到.npmrc

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.