我可以设置npm使用.pac文件吗?

我试图为npm(nodejs)设置一个私人registry,但我不想复制整个公共数据库。 我已经看到如何做到这一点,但是,即使我遵循这种方法,我还有一个问题。 我的工作站位于VPN后面,所以我需要在NPM中设置代理才能从公共registry中获取模块。 如果我创build我的私人registry,它将坐在公司的VPN(使其公开的访问不是一个选项)。 这意味着我不需要代理来访问我的私人registry,但正如我之前所说,我确实需要它的公共registry。 我从git获得了NPM的代码,但在修改之前,我想我会问,有没有人知道如何解决这个问题? 我知道你可以在运行npm install时指定registry和代理,但是我希望能够运行npm install。 有没有办法将pac文件应用于npm? 除了修改源代码之外,还有什么可以做的吗?

我面临着这个确切的问题。 我们在私人npmregistry前设置一个nginx代理。 我们创build了一个404全局npmregistry的回退。

因此,在执行npm安装时,我们只需指定nginx代理,如果find的话,这将从私有registry中提供服务,如果不是的话则会从全局registry中提供。

这是您可以使用的nginxconfiguration:

 server { listen 80 default_server; location ~ ^/registry/*/ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://private_npm_upstream; proxy_intercept_errors on; error_page 404 = @fallback-2; proxy_redirect off; } location @fallback-2 { access_log /var/log/nginx/global_npm.access.log; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host registry.npmjs.org; proxy_set_header X-NginX-Proxy true; proxy_pass http://registry.npmjs.org; proxy_redirect off; proxy_intercept_errors on; } } upstream global_npm_upstream { server registry.npmjs.org; } upstream private_npm_upstream { server 127.0.0.1:5984; }