Gehen wir zunächst von einer Webapplikation aus, die im Backend auf Node.js setzt und als Datenbank Redis nutzt. Dann hätten wir die MIT-Lizenz für Node.js und die Three Clause BSD License für Redis. Dann wäre da noch der Node Package Manager mit seiner Artistic License 2.0. Das ist allerdings nur die Spitze des Eisbergs. Sobald Sie mit dem Kommando npm install anfangen, beginnen Ihre eigentlichen Probleme. Fügen Sie beispielsweise Express.js hinzu, werden 39 Pakete installiert, und jedes weist seine eigene Lizenz auf.
Braucht Ihre Rechtsabteilung nun eine Aufstellung über alle Lizenzen, die in Ihrer Applikation Anwendung finden, können Sie entweder das node_modules-Verzeichnis durchgehen und die Lizenz jedes Pakets einzeln erfassen oder Sie nutzen eines der zahlreichen Werkzeuge, die es für diesen Fall gibt. Eines dieser Werkzeuge ist der Node License Finder oder kurz nlf.
Installation
Die Installation von nlf erfolgt wie bei fast allen Werkzeugen für Node.js über den npm; und hier, wie bei den meisten Kommandozeilenwerkzeugen üblich, global für Ihr System mit dem Befehl npm install –g nlf. Möchten Sie nlf nicht auf der Kommandozeile, sondern innerhalb Ihrer Applikation einsetzen, reicht eine lokale Installation völlig aus.
TypeScript is fun
Learn TypeScript by building a browser game together with trainer David Müllerchen.
Node.js
Unlock the full potential of the server-side JavaScript platform in the workshop with Sebastian Springer.
Verwendung
Wie schon angedeutet, können Sie den nlf auf zweierlei Arten einsetzen – als Werkzeug auf der Kommandozeile oder als Modul direkt in Ihre Applikation eingebunden. Die gebräuchlichste Einsatzweise ist die Kommandozeile. Hier müssen Sie nur in das Verzeichnis der Applikation wechseln, deren Lizenzinformationen Sie auslesen möchten. Dabei müssen Sie darauf achten, dass das Verzeichnis eine package.json-Datei beinhaltet. Sie ist der Ursprung der Suche des nlf. Dann führen Sie auf der Kommandozeile den Befehl nlf aus. Für eine Installation von Express sieht die (verkürzte) Ausgabe des nlf folgendermaßen aus:
$ nlf accepts@1.2.13 [license(s): MIT] ├── package.json: MIT └── license files: MIT array-flatten@1.1.1 [license(s): MIT] ├── package.json: MIT ├── license files: MIT └── readme files: MIT
Der nlf bedient sich dabei unterschiedlicher Quellen. Wie die Ausgabe nahelegt, sind dies die package.json-Datei des jeweiligen Pakets, die LICENSE-Datei und die README.md-Datei. Den nlf können Sie mit verschiedenen Optionen auf der Kommandozeile weiter beeinflussen (Tabelle 1).
Bei der Verwendung des nlf in einer Applikation müssen Sie das Modul per require einbinden und können dann die find-Methode des Moduls verwenden, um die Lizenzinformationen auszulesen. Im Quellcode sieht das dann so aus:
var nlf = require('nlf'); nlf.find({directory: '.'}, function (err, data) { // work with license data });
Die Lizenzinformationen erhalten Sie im data-Objekt der Callback-Funktion. Diese sind in einer umfangreichen Objektstruktur verpackt, die neben den reinen Lizenzinformationen eine Vielzahl weiterer Informationen wie das Repository oder die Version des Pakets beinhaltet.
Zusammenfassung
Der Node License Finder löst ein Problem, mit dem man nicht häufig in Berührung kommt. Wenn es allerdings auftritt, ist man über eine solch bequeme Lösung froh.
Der nlf ist nicht die einzige Lösung für das Lizenzproblem. Weitere Implementierungen sind der NPM License Checker oder Licensecheck. Die Funktionsweise dieser Werkzeuge ist stets ähnlich.
PHP Magazin
Dieser 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 Kiosk ist das PHP Magazin weiterhin im Print-Abonnement erhältlich.
Aufmacherbild: Lush green jungle hillside von Shutterstock / Urheberrecht: BonnieBC