2014-09-23 33 views
14

我們在公司防火牆後面使用npm,因此在npm配置中使用代理和https代理設置。只要所有npm模塊從外部註冊表加載,這工作正常。但事實上,我們在內部的github上也有內部模塊。這些模塊的訪問權限當然不能使用代理。我的問題是:我可以在npm配置中指定一個域列表,不應該爲其使用代理嗎?就像unix shell中的no_proxy環境變量一樣?如何從npm代理中排除某些域

+1

有一個拉請求未決˚F或者這個https://github.com/npm/npm/pull/2873 – 2014-09-23 08:40:52

回答

17

假設你的環境是這樣的:your.proxy.host:3128

  • 當地的Nexus註冊地::https://your.local.nexus.registry/nexus/content/groups/npm/
  • 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 
      

      但隨後故宮也將嘗試使用代理服務器來達到你的(本地)的Nexus註冊使用代理。

      你需要有最新的NPM版本之一(NPM 2.14.7正常工作),並設置附加的環境變量設置爲代理排除您的Nexus註冊地:

      no_proxy=your.local.nexus.registry 
      
    +1

    有沒有一種方法來指定與前版本npm的「no_proxy」配置? – Eria 2016-01-12 13:43:26

    +4

    no_proxy不適用於我,與npm版本3.10.8 – 2016-11-03 12:40:49

    +0

    @DánielKis我也發現與npm 3.10.10 no_proxy不工作。我試圖把它放在npmrc文件中,也放在主系統環境變量中。你是如何修復它的? – 2017-08-04 09:14:23

    0

    由於adiesner指出,你不能設置一個noproxy/no_proxynpm 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" 
    
    相關問題