© saicle/Shutterstock.com
PHP Magazin
Eigenes npm-Repo leicht gemacht

Node.js-Module: sinopia

Mittlerweile hat es sich nahezu überall als Best Practice durchgesetzt, npm-Pakete für eine Applikation nicht mit deren Quellcode in das Repository einzuchecken. Stattdessen sollte die package.json-Datei alle Abhängigkeiten auflisten und npm dann zum Deployment verwendet werden, um die entsprechenden Pakete herunterzuladen. In der Theorie klingt diese Vorgehensweise durchaus sinnvoll, jedoch entstehen in der Praxis daraus einige Probleme.

Sebastian Springer


Das Hauptargument gegen diese Struktur ist, dass Sie sich von einem externen System abhängig machen. Führen Sie ein Deployment durch, muss das npmjs.com-Repository verfügbar sein, da ansonsten die Pakete nicht heruntergeladen werden können. Das setzt voraus, dass es sich bei diesem Repository um eine hochverfügbare Stelle handelt; ohne jede vertragliche Zusicherung hat das allerdings eher Glücksspielcharakter. Das nächste Problem ist, dass Sie immer eine Internetverbindung zu npmjs.com für das Deployment benötigen. Bei rein internen Systemen kann aber auch das schon Schwierigkeiten bereiten. Noch größer werden die Herausforderungen, wenn es um private npm-Pakete oder das Überschreiben existierender Pakete geht. Die Lösung für diese Anforderungen lautet: Entweder Sie nehmen den kostenpflichtigen Dienst von npmjs.com in Anspruch oder Sie setzen sich ein eigenes Repository auf.

Eine weitere leichtgewichtige Lösung existiert in Form von sinopia – einem Caching-Dienst für npm.

Installation

sinopia ist ein Open-Source-Projekt auf GitHub und kann mit npm install –g sinopia als globales npm-Paket installiert werden. Das Ziel der Entwickler von sinopia ist es, den Dienst so einfach wie möglich zu halten. Aus diesem Grund müssen Sie auch keine zusätzlichen Datenbanken oder weitere externe Abhängigkeiten installieren. Außerdem kommt sinopia ohne weitere Konfiguration aus. Die Standardkonfiguration liegt im Heimatverzeichnis des aktuellen Benutzers im Unterverzeichnis .config/sinopia.

Geben Sie nach der Installation den Befehl sinopia auf der Kommandozeile ein, wird der Dienst gestartet und automatisch auf http://localhost:4873 gebunden. Ab diesem Zeitpunkt können Sie über diesen URL den Dienst im Browser erreichen. Für den Betrieb müssen Sie nur noch die Konfiguration Ihres lokalen npm ändern, indem Sie folgenden Befehl ausführen: npm set regis­try http://localhost:4873. Mit dem Kommando npm set ca können Sie außerdem die Konfiguration für den verschlüsselten Zugriff auf das Repository konfigurieren. Nach diesen Anpassungen können Sie mit sinopia arbeiten. Eine Besonderheit betrifft das Publizieren exklusiv auf dieser lokalen Instanz. Sie benötigen hierfür Benutzeraccounts. Diese können Sie mit dem Befehl npm add­user --registry http://localhost:4873/ anlegen. Der npm führt Sie durch den Prozess, an dessen Ende Sie ein vollständig konfiguriertes lokales Benutzerkonto haben.

Einsatz

Im einfachsten Fall spielt sinopia die Rolle eines Proxys. Sämtliche Anfragen werden über...

PHP Magazin
Eigenes npm-Repo leicht gemacht

Node.js-Module: sinopia

Mittlerweile hat es sich nahezu überall als Best Practice durchgesetzt, npm-Pakete für eine Applikation nicht mit deren Quellcode in das Repository einzuchecken. Stattdessen sollte die package.json-Datei alle Abhängigkeiten auflisten und npm dann zum Deployment verwendet werden, um die entsprechenden Pakete herunterzuladen. In der Theorie klingt diese Vorgehensweise durchaus sinnvoll, jedoch entstehen in der Praxis daraus einige Probleme.

Sebastian Springer


Das Hauptargument gegen diese Struktur ist, dass Sie sich von einem externen System abhängig machen. Führen Sie ein Deployment durch, muss das npmjs.com-Repository verfügbar sein, da ansonsten die Pakete nicht heruntergeladen werden können. Das setzt voraus, dass es sich bei diesem Repository um eine hochverfügbare Stelle handelt; ohne jede vertragliche Zusicherung hat das allerdings eher Glücksspielcharakter. Das nächste Problem ist, dass Sie immer eine Internetverbindung zu npmjs.com für das Deployment benötigen. Bei rein internen Systemen kann aber auch das schon Schwierigkeiten bereiten. Noch größer werden die Herausforderungen, wenn es um private npm-Pakete oder das Überschreiben existierender Pakete geht. Die Lösung für diese Anforderungen lautet: Entweder Sie nehmen den kostenpflichtigen Dienst von npmjs.com in Anspruch oder Sie setzen sich ein eigenes Repository auf.

Eine weitere leichtgewichtige Lösung existiert in Form von sinopia – einem Caching-Dienst für npm.

Installation

sinopia ist ein Open-Source-Projekt auf GitHub und kann mit npm install –g sinopia als globales npm-Paket installiert werden. Das Ziel der Entwickler von sinopia ist es, den Dienst so einfach wie möglich zu halten. Aus diesem Grund müssen Sie auch keine zusätzlichen Datenbanken oder weitere externe Abhängigkeiten installieren. Außerdem kommt sinopia ohne weitere Konfiguration aus. Die Standardkonfiguration liegt im Heimatverzeichnis des aktuellen Benutzers im Unterverzeichnis .config/sinopia.

Geben Sie nach der Installation den Befehl sinopia auf der Kommandozeile ein, wird der Dienst gestartet und automatisch auf http://localhost:4873 gebunden. Ab diesem Zeitpunkt können Sie über diesen URL den Dienst im Browser erreichen. Für den Betrieb müssen Sie nur noch die Konfiguration Ihres lokalen npm ändern, indem Sie folgenden Befehl ausführen: npm set regis­try http://localhost:4873. Mit dem Kommando npm set ca können Sie außerdem die Konfiguration für den verschlüsselten Zugriff auf das Repository konfigurieren. Nach diesen Anpassungen können Sie mit sinopia arbeiten. Eine Besonderheit betrifft das Publizieren exklusiv auf dieser lokalen Instanz. Sie benötigen hierfür Benutzeraccounts. Diese können Sie mit dem Befehl npm add­user --registry http://localhost:4873/ anlegen. Der npm führt Sie durch den Prozess, an dessen Ende Sie ein vollständig konfiguriertes lokales Benutzerkonto haben.

Einsatz

Im einfachsten Fall spielt sinopia die Rolle eines Proxys. Sämtliche Anfragen werden über...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang