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