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

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

然后运行a.bat,但没有工作,我发现“set”这个词是npm和bat的特殊关键字,有什么方法来解决这个问题吗?


当前回答

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

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

其他回答

2.name can no longer contain capital letters

不要在包裹上使用大写字母:

npm install --save uex

用这个:

npm install --save vuex

您可以使用.bat进行更改,确保您之前运行了call命令,希望这有助于将来使用类似的.bat命令的任何人

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

全局设置npm注册表 使用下面的命令修改登录用户的.npmrc配置文件 NPM配置注册表<注册表url> 示例:npm config set registry https://registry.npmjs.org/


设置npm注册表范围 作用域允许将相关的包分组在一起。作用域包将安装在node_modules文件夹下的子文件夹中。 例如:node_modules / @my-org packagaename 要设置范围注册表,请使用:npm config set @my-org:registry http://example.reg-org.com 使用作用域安装包:npm install @ myy-org /mypackage 无论何时你从scope @my-org安装任何包,NPM都会在链接到scope @my-org的注册表设置中搜索注册表url。


在本地为一个项目设置npm注册表 仅为当前项目修改npm注册表。在项目的根文件夹中创建一个名为.npmrc的文件 在文件中添加以下内容

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

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

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

你可能无法像Gntem指出的那样使用.bat文件更改npm注册表。 但是我理解您需要自动更改注册中心的能力。 你可以通过将.npmrc配置放在单独的文件中(比如npmrc_jfrog和npmrc_default),并让你的.bat文件执行复制任务来做到这一点。

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

xcopy /y npmrc_default .npmrc

你的jfrog_registry.bat会有

xcopy /y npmrc_jfrog .npmrc

注意:/y抑制了确认您想要覆盖现有目标文件的提示。

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

你可以在这里阅读更多关于xcopy的内容。