我有一个这样的场景,我需要一个解决方案。
场景:
我每天都使用开发工具,如Android Package Manager,nodeJS(npm),Homebrew等。我需要在家里和工作中使用它,但在工作中我落后于代理,所以我必须在每个工具上设置代理,例如
npm config set proxy http://proxy:10
但是当我在家工作时,我不需要它,因为代理不提供世界上最快的带宽:)我会说,它很慢,我不想浪费时间下载慢 10 倍的软件包。
问题:
有没有解决方案可以在这些工具上拥有两个不同的配置文件?或者我需要编写一个 bash 脚本来在每次更改位置(工作/家庭)时更改这些代理设置?
如果可能的话,或者你对熟悉的场景有一些经验,请告诉我。
谢谢!
总而言之,我最终得到了我在下面添加的 bash 解决方案:
# Proxy
alias proxyChecker='env | grep -i proxy'
function enableProxy() {
export http_proxy=http://my_proxy.com:port
export {https,ftp,rsync}_proxy=$http_proxy
export {HTTP,HTTPS,FTP,RSYNC}_PROXY=$http_proxy
echo -e "Proxy environment variable set."
npm config set proxy $http_proxy
npm config set https-proxy $http_proxy
echo -e "npm proxy set."
git config --global http.proxy $http_proxy
git config --global https.proxy $http_proxy
echo -e "git global proxy set."
}
function disableProxy() {
unset {http,https,ftp,rsync}_proxy
unset {HTTP,HTTPS,FTP,RSYNC}_PROXY
echo -e "Proxy environment variable removed."
npm config delete proxy
npm config delete https-proxy
echo -e "npm proxy removed."
git config --global --unset http.proxy
git config --global --unset https.proxy
echo -e "git global proxy removed."
}
作为参考,有很多好的博客文章/文章,例如这里,这里和这里。
你现在这样做的方式需要大量的管理。最好通过操作系统级别的 SSH 隧道通过隧道传输所有流量(包括 npm)。这样,您就可以在需要时打开/关闭隧道。
有一个不错的 ssh-tunnel npm 包,它有助于从不同的环境切换以进行暂存/生产/等,您可以自己配置 - 在这里查看 github 存储库。