Lokales NPM-Repository in 5 Minuten mit seinen Paketen und Caching

Guten tag!

Früher oder später haben Organisationen Probleme mit der Verbreitung von js-Modulen zwischen Projekten. Es ist der Zeitpunkt gekommen, an dem sich diese Frage in unserem Unternehmen stellt.

Kopieren und Einfügen des Codes ist der Weg zur Schattenseite. Daher wurde beschlossen, nicht nur js-Code zu schreiben, sondern npm-Pakete zu erstellen, die zwischen ihren Projekten verteilt werden sollen.

Das Finden freier, privater npm-Repositories hat zu einer Sackgasse geführt, und die Verwendung privater Repositorys bei npm erfordert eine Gebühr (und dies ist nicht unsere Mentalität).

Da das Büro über einen Server verfügt, der (fast) immer funktioniert, wurde entschieden, die lokale npm bereitzustellen.

Bild

Das Gerät populärer lokaler npm-Repositories ist ziemlich einfach und eintönig, wir haben uns für Verdaccio entschieden , da Updates für dieses relativ erst kürzlich veröffentlicht wurden.

Dies ist im Wesentlichen das npm-Paket, das auf Node.js> 4 platziert ist und eine Webschnittstelle für einen bestimmten Port bereitstellt.

Ein großer Vorteil ist die Caching-Funktion. Wenn das lokale npm das von ihm angeforderte Paket nicht findet, geht es zu npmjs.com, lädt das erforderliche Paket auf seine Festplatte herunter und wenn es das Paket erneut anfordert, verteilt es die bereits zwischengespeicherte Version.

Also anpassen.

Auf dem Computer, der der Server sein wird:

npm i -g verdaccio

Die Datei C: \ Users \ lab \ AppData \ Roaming \ verdaccio \ config.yaml enthält Servereinstellungen

Die Standardparameter sind brauchbar, Sie können nichts ändern, fügen Sie einfach eine Einstellung am Ende der Datei hinzu, mit der Verdaccio den zu hörenden Port versteht.

listen: 192.168.51.79:1234

192.168.51.79 ist die IP-Adresse des Servers, die die Adresse so einstellt, dass wir vom lokalen Netzwerk aus über die IP-Adresse des Servers oder über seinen DNS-Namen zugreifen und Port 1234 hinzufügen können, über den die Webschnittstelle aufgerufen wird.

Wenn Sie listen: 192.168.51.79:80 vorschreiben , müssen Sie beim Einrichten von Clients keinen Port schreiben.

Führen Sie als Nächstes unsere lokale npm aus

verdaccio

Die restlichen Aktionen werden auf Kunden ausgeführt.

Legen Sie den Pfad zum lokalen Repository fest.

npm set registry http://192.168.51.79:1234

Fertig, jetzt werden alle Ihre npm-Anforderungen über einen lokalen Server zwischengespeichert.

Wenn Sie das npm-Paket auf dem Server veröffentlichen müssen, führen Sie die folgende Anweisung aus.

Wir erstellen Benutzer

npm adduser --registry http://192.168.51.79:1234 
login
password
mail@mail.ru

Einloggen

npm login
password
bezrukov@mir-omsk.ru

Prüfen Sie, ob wir unter dem Benutzer "login" sind.

npm whoami

Veröffentlichen Sie das Paket. RootProjectFolder ist ein Ordner mit mindestens drei Dateien index.js \ package.json \ README.md, ein Beispiel, das in github enthalten ist .

cd /rootProjectFolder
npm publish

Aktualisieren Sie das Paket. Wir aktualisieren die Version in package.json und führen Befehle aus

cd /rootProjectFolder
npm publish

Paket auf einem lokalen Server können Sie zu 192.168.51.79 : 1234 gehen und sehen, dass es ein neues Paket gibt.

Übrigens werden Informationen zu jedem der Pakete in einer bequemen Form dargestellt und es wird nach lokalen Paketen gesucht.

Bild

PS: Wenn Ihr Netzwerk über einen Proxy verfügt, müssen Sie seine Parameter explizit auf dem Server angeben. Dies ist auf dem Client nicht erforderlich, da das NPM-Repository lokal ist und der Proxy-Server keine Clients für den Zugriff auf den Server benötigt.

Führen Sie auf dem Server den Befehl npm config edit aus und fügen Sie die folgenden Zeilen hinzu

proxy=http://name:pass@proxy:port/
https-proxy=http://name:pass@proxy:port/
registry=http://registry.npmjs.org/


PPS Bei der Ausführung unter Windows ist es vorzuziehen, die Powershell auf dem Server zu verwenden. In cmd npm kann sie innerhalb von 24 Stunden auflegen.

Ich würde mich über Kommentare und Feedback freuen, wie es für Sie funktioniert.

Jetzt auch beliebt: