Dos perfiles en herramientas de desarrollo (trabajo y hogar)

Tengo un escenario como el siguiente y necesito una solución.

Escenario :
Utilizo herramientas de desarrollo como Android Package Manager, nodeJS (npm), Homebrew, etc. diariamente. Necesito usarlo en casa y en el trabajo, pero en el trabajo estoy detrás de un proxy, así que tuve que configurar el proxy en cada herramienta, por ejemplo

npm config set proxy http://proxy:10 

Pero cuando trabajo en casa, no lo necesito, porque el proxy no proporciona el ancho de banda más rápido del mundo 🙂 Diría que es bastante lento y no quiero perder el time para download packages 10 veces más lento.

Pregunta :
¿Hay alguna solución para tener dos perfiles diferentes en estas herramientas? ¿O necesito escribir un script bash para cambiar estas configuraciones proxy cada vez que cambio mi location (trabajo / hogar)?

Por favor, avíseme, si es posible o si tuvo algunas experiencias con un escenario familiar.
¡Gracias!

En general, terminé con una solución de bash que agregué a continuación:

 # 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." } 

Como reference, hay muchas buenas publicaciones / artículos de blog, por ejemplo, aquí , aquí y aquí .

La forma en que lo está haciendo ahora necesita mucha administración. Es mejor tunelizar todo el tráfico, incluido npm a través de un túnel SSH en el nivel del sistema operativo. De esta manera, puedes encender / apagar el túnel siempre que lo necesites.

Hay un buen package ssh-tunnel npm que ayuda con la conmutación de diferentes entornos para la puesta en escena / prod / etc que puede configurar usted mismo – mire aquí el repository github.