/ npm

Npm, bower, git und Proxy

Viele Unternehmen erlauben keinen freien Zugang zum Internet, der Weg geht über einen Proxy nach außen. Doch leider macht das die Entwicklung mit den Package Managern im Internet sehr fehleranfällig.

ACHTUNG:
Ein neuerer Eintrag in diesem Blog ergänzt diesen und zeigt eine einfachere Lösung auf: Proxy Settings für npm, Angular CLI, ...


Dieser Artikel ist Teil der Serie:
Ionic_Start - Teil 3

Er beschäftigt sich mit den Anfangsschwierigkeiten bei der Installation der nötigen Software. Man merkt den Tools an, dass sie in der OpenSource und plattformübergreifenden Szene angesiedelt sind.
Zu Hause geht alles einfach, doch im Firmennetz verzweifelt man. Natürlich könnte man jetzt auch einfach auf die Annehmlichkeiten verzichten, die einem Package Manager bieten, die sich die aktuellen Packages direkt aus GitHub holen, doch vielleicht klappt es ja doch und ich muss nur ...

Baum mit Gesicht


Firewalls und Proxies machen einem das Leben schwer.

Https not allowed:
npm install -g cordova

npm http GET https://registry.npmjs.org/cordova
npm ERR! network read ECONNRESET

Abhilfe:

npm config set registry http://registry.npmjs.org/

Ein .npmrc file wird im Home Verzeichnis des Users (C:\Users\yourName) angelegt, bzw. erweitert.
Somit wird beim nächsten Aufruf dann http anstatt von https verwendet.

Proxy

npm, git, bower, tsd: Diese Tools wollen ins Internet.

Zum Testen:

> npm install -g bower

> git clone https://github.com/angular/angular.js.git

Bei Fehlern:
Failed to connect to github.com port 443: Timed out

Es gibt verschiedene Möglichkeiten:

  • Environment Variablen, z.B. HTTP_PROXY setzen
  • Commandline Parameter
  • Config files ins Home Verzeichnis (C:\Users\yourName) legen

Config files

Ich hatte am meisten Erfolg mit den config files, auch wenn es umständlich ist, denn jedes Tool hat sein eigenes File.

Sonderzeichen müssen url encodet werden.
z.B. hier für den User:

mydomain\myusername ->mydomain%5Cmyusername
P@ss?word1 -> P%40ss%3Fword1

.bowerrc

{
    "proxy" : "http://mydomain%5Cmyusername:P%40ss%3Fword1@proxy.mydomain.lan:8080",
    "https-proxy": "http://mydomain%5Cmyusername:P%40ss%3Fword1@proxy.mydomain.lan:8080"
}

.npmrc

registry=http://registry.npmjs.org/
strict-ssl=false
proxy=http://mydomain%5Cmyusername:P%40ss%3Fword1@proxy.mydomain.lan:8080
https-proxy=http://mydomain%5Cmyusername:P%40ss%3Fword1@proxy.mydomain.lan:8080

.gitconfig

[http]
	proxy = http://mydomain%5Cmyusername:P%40ss%3Fword1@proxy.mydomain.lan:8080

.tsdrc

{
    "proxy": "http://mydomain%5Cmyusername:P%40ss%3Fword1@proxy.mydomain.lan:8080"
}

Command line Aufrufe

Es gibt aber auch die Möglichkeit über den Aufruf des Tools selbst die Konfigurationswerte zu setzen, bzw. das Config File damit zu schreiben:

z.B. bei npm:

npm config set proxy http://myusername:myp*****word@proxy.us.somecompany:8080

Sehr hilfreich, kann auch folgender Aufruf sein:
npm config list


Bemerkungen:
  • Falls der Proxy eine Authentifizierung erfordert, wie in den obigen Beispielen definiert, ist es natürlich erforderlich einen speziellen Usernamen anzufordern, bei dem das Passwort nicht abläuft und der nur für die Proxy Authentifizierung verwendet wird.

  • Eine sehr interessante Lösung

Easy Configuration of Git for Windows on a Corporate Network
Hier wird ein Script in die
C:\Users\ich.bashrc hinterlegt und man kann damit den proxy ein und ausschalten, indem Umgebungsvariablen gesetzt werden. Das ist praktisch, wenn man das Notebook zu Hause und im Firmennetzt verwendet.
Dann muss man allerdings die Bashrc verwenden.
Wenn man git installiert (https://github.com/msysgit/msysgit/releases/), dann bekommt man die Git Bash installiert, das ist ein Cygwin Derivat. Bemerkung: "Run Git from the Windows Command Prompt" beim Installieren auswählen, das benötigt Visual Studio.


Dieser Artikel ist Teil der Serie Ionic_Start.
Links und Glossar