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

时间:2014-09-23 07:48:21

标签: proxy npm

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

4 个答案:

答案 0 :(得分:22)

假设您的环境如下:

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

registry = https://your.local.nexus.registry/nexus/content/groups/npm/

您可以通过设置环境变量

告诉npm使用代理
http_proxy=http://your.proxy.host:3128
https_proxy=http://your.proxy.host:3128

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

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

no_proxy=your.local.nexus.registry

答案 1 :(得分:6)

NPM 6.4.1 于2018-08-22发布以来,即使配置了自定义注册表,您也可以使用<script src="{{root}}assets/js/app.js"></script>选项。

示例:

  • noproxy
  • 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>"(接受 *。domain 之类的模式)

检查配置:

  • npm config set noproxy "my-proxy-host"

参考文献:

答案 2 :(得分:1)

adiesner所示,您无法在noproxy中设置no_proxy / npm config,因此唯一的方法是通过环境变量:

npm config set registry "your.local.nexus.registry/nexus/content/groups/npm/"

export http_proxy="http://your.proxy.host:3128"
export https_proxy=$http_proxy
export no_proxy="your.local.nexus.registry"

答案 3 :(得分:1)

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

noproxy[]=.local.nexus
noproxy[]=.internal.npm.repo 

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