Node.js-Module: sinopia

Sinopia – Eigenes npm-Repo leicht gemacht
Kommentare

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.

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 registry 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 adduser –registry http://localhost:4873/ anlegen. Der npm führt Sie durch den Prozess, an dessen Ende Sie ein vollständig konfiguriertes lokales Benutzerkonto haben.

API Summit 2017

Moderne Web APIs mit Node.js – volle Power im Backend

mit Manuel Rauber (Thinktecture), Sven Kölpin (Open Knowledge)

API First mit Swagger & Co.

mit Thilo Frotscher (Freiberufler)

Einsatz

Im einfachsten Fall spielt sinopia die Rolle eines Proxys. Sämtliche Anfragen werden über sinopia geleitet und beantwortet oder direkt an npmjs weitergeleitet. Um beispielsweise das Paket express.js zu installieren, geben Sie das Kommando npm install express ein. Zunächst wird der lokale sinopia-Cache geprüft; wird hier nichts gefunden, wird das entsprechende Paket von npmjs heruntergeladen, im sinopia-Cache gespeichert und auf Ihrem System installiert.

Sobald Sie ein Paket einmal installiert haben, sind Sie also unabhängig vom offiziellen npm-Repository und können npm auch verwenden, wenn es offline ist oder Sie über keine Internetverbindung verfügen. Möchten Sie ein Paket von npmjs lokal überschreiben, können Sie entweder in der Konfiguration einen Eintrag für das Paket erstellen und den Eintrag npmjs aus der Eigenschaft proxy_access entfernen oder auch eine eigene Version des Pakets mit einer abweichenden Versionsnummer erstellen und sie lokal publizieren.

Zusammenfassung

Ein großer Vorteil von sinopia ist, dass die Datenhaltung komplett auf dem Dateisystem erfolgt und aus diesem Grund keine lokale Datenbank benötigt wird. Neben dem reinen Caching stellt Ihnen diese Applikation noch weitere Features wie die lokale Benutzerverwaltung und ein Web-Frontend zur Verfügung. Insgesamt handelt es sich bei sinopia um eine solide Lösung für eine größere Unabhängigkeit von npmjs.

PHP Magazin

Entwickler MagazinDieser Artikel ist im PHP Magazin erschienen. Das PHP Magazin deckt ein breites Spektrum an Themen ab, die für die erfolgreiche Webentwicklung unerlässlich sind.

Natürlich können Sie das PHP Magazin über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist das Entwickler Magazin ferner im Abonnement oder als Einzelheft erhältlich.

Aufmacherbild: Solar panels, solar modules, clean energy von Shutterstock / Urheberrecht: High level specialist

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -