【问题标题】:Two profiles on development tools (work and home)关于开发工具的两个配置文件(工作和家庭)
【发布时间】:2015-01-24 02:30:27
【问题描述】:

我有一个类似下面的场景,我需要一个解决方案。

场景
我每天都使用 Android Package Manager、nodeJS (npm)、Homebrew 等开发工具。我需要在家里和工作中使用它,但在工作中我在代理后面,所以我必须在每个工具上设置代理,例如

npm config set proxy http://proxy:10

但是当我在家工作时,我不需要它,因为代理没有提供世界上最快的带宽:) 我想说,它很慢,我不想浪费我的时间下载包的速度要慢 10 倍。

问题
是否有任何解决方案可以在这些工具上拥有两个不同的配置文件?或者我每次更改我的位置(工作/家庭)时都需要编写一个 bash 脚本来更改这些代理设置?

如果可能,或者如果您对熟悉的场景有一些经验,请告诉我。
谢谢!

【问题讨论】:

    标签: git bash macos npm


    【解决方案1】:

    您现在的工作方式需要大量管理。最好通过操作系统级别的 SSH 隧道传输所有流量,包括 npm。这样您就可以在需要时打开/关闭隧道。

    有一个不错的 ssh-tunnel npm 包,它有助于从不同的环境切换到 staging/prod/etc,您可以自行配置 - 查看 github repo here

    【讨论】:

    • 感谢您的回答。它看起来很有希望,但是例如呢?自制软件,工具,如 SublimeText 或 git(当我需要为它克隆一个 repo 时,我也必须设置代理)?
    • 如果您希望所有连接都通过隧道,那么您需要的是 VPN,因此如果您的工作没有提供 VPN,您可以 1) 获取 VPN 提供商或 2) 获取支持VPN的路由器或3)在服务器上设置像openVPN这样的VPN服务器,这将允许您的所有连接通过该VPN,包括您的所有应用程序。请随意提出一个新问题以获取更多信息。
    • 是的。我明白你的意思。但是情况是完全绕过使用VPN或在我不需要它时设置代理。因为我仍然可以在代理后面设置所有内容,然后通过 VPN 从家里连接它并且它可以工作,但它真的很慢(例如 150 kb/s 与 15 MBit/s),对我来说这很重要。这就是我问它的原因;)
    • 我觉得你很困惑。当你不需要它的时候,你按下关机按钮,希望你能做到;)
    • 我想一段时间后我没有感到困惑,您也没有回答我的问题;)但是,我非常感谢您的帮助、帖子、cmets 和 ssh 隧道,所以我投了赞成票你的答案;)
    【解决方案2】:

    总而言之,我最终得到了一个我在下面添加的 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."
    }
    

    作为参考,有很多不错的博客文章/文章,例如hereherehere

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-30
      • 2010-11-01
      • 1970-01-01
      • 2022-01-22
      • 2012-05-04
      • 2016-10-05
      • 2022-07-08
      • 1970-01-01
      相关资源
      最近更新 更多