如何从npm代理中排除某些域

Gre*_*gor 19 proxy npm

我们在公司防火墙后面使用npm,因此在npm配置中使用代理和https代理设置.只要从外部注册表加载所有npm模块,这都可以正常工作.但事实上我们在内部github上也有内部模块.当然,访问这些模块不能使用代理.我的问题是:我可以在npm配置中指定域名列表,不应该使用代理吗?类似于unix shell中的no_proxy环境变量?

小智 23

假设您的环境如下所示:

NPM必须使用本地Nexus注册表.配置文件:.npmrc

registry = https://your.local.nexus.registry/nexus/content/groups/npm/
Run Code Online (Sandbox Code Playgroud)

您可以通过设置环境变量告诉npm使用代理

http_proxy=http://your.proxy.host:3128
https_proxy=http://your.proxy.host:3128
Run Code Online (Sandbox Code Playgroud)

但是,然后npm也会尝试使用代理到达您的(本地)Nexus注册表.

你需要有一个最新的npm版本(npm 2.14.7工作正常)并设置一个额外的环境变量来从代理中排除你的Nexus注册表:

no_proxy=your.local.nexus.registry
Run Code Online (Sandbox Code Playgroud)

  • no_proxy不适用于我,使用npm版本3.10.8 (4认同)
  • 我相信npm,它应该是`noproxy`,没有下划线。 (2认同)

Gui*_*sta 5

自2018年8月22日发布NPM 6.4.1noproxy,即使配置了自定义注册表,您也可以使用该选项。

范例:

  • npm config set registry "http://<my-npm-registry-host>:<registry-port>"
  • npm config set proxy "http://<my-proxy-host>:<proxy-port>"
  • npm config set https-proxy "http://<my-proxy-host>:<proxy-port>"
  • npm config set noproxy "my-proxy-host"(接受* .domain之类的模式)

检查配置:

  • npm config list

参考文献:


cha*_*ndu 5

要排除某些域,您可以在 .npmrc 中添加以下行

noproxy[]=.local.nexus
noproxy[]=.internal.npm.repo 
Run Code Online (Sandbox Code Playgroud)

https://docs.npmjs.com/misc/config#noproxy