JavaScript >> Javascript-Tutorial >  >> Tags >> npm

Keine globalen Npm-Pakete mehr (Teil 2)

In einem früheren Artikel, den ich Anfang dieses Jahres geschrieben habe, habe ich über die Eliminierung von Projektabhängigkeiten gesprochen, die global installiert werden mussten, wie Grunt, Gulp, Browserify, WebPack usw. Natürlich habe ich mich nicht für die Eliminierung dieser Pakete ausgesprochen, sondern nur ersetzt den -g mit --save kennzeichnen oder --save-dev Flag, wenn Sie sie mit npm install installieren und dann npm-Skripte verwenden, um die Binärdateien auszuführen. Nun, es gibt noch mehr …

Eine andere Lösung

Dieses Thema ist mir in letzter Zeit oft durch den Kopf gegangen, und zwar stark genug, um mich davon zu überzeugen, 2 weitere Posts (3 weitere, wenn Sie diesen mitzählen) zu diesem Thema auf anderen Blogs zu schreiben. Das erste ging am 4. September auf Sitepoint live und heißt How to Solve the Global npm Module Dependency Problem und das zweite wurde gerade im Smashing Magazine als The Issue With Global Node Packages veröffentlicht .

Diese anderen 2 Artikel hatten etwas, das mein Artikel in Teil 1 nicht hatte:eine Alternative zur Verwendung von npm-Skripten. Jetzt muss ich sagen, dass ich immer noch von ganzem Herzen für die Verwendung von npm-Skripten eintrete, sei es nur, um anderen Leuten zu helfen, die Ihr Projekt aufgreifen und verwenden, oder sogar für sich selbst, wenn Ihr Aufruf an Browserify mehrere Transformationen oder Plugins enthält, die Sie nicht möchten jedes Mal eintippen, aber manchmal möchten Sie einfach nur „grunzen“ oder „schlucken“ oder was auch immer das Werkzeug ist, tippen und etwas bewirken.

Bevor ich das „Geheimnis“ enthülle, das einem Bruchteil von Ihnen möglicherweise nicht bekannt ist, muss ich Gabriel Falkenberg für seinen Kommentar zu meinem vorherigen Beitrag Anerkennung zollen. Er hat mir diesen Trick vorgestellt.

Der Trick besteht also darin, dass Sie Ihrer PATH-Umgebungsvariablen relative Pfade hinzufügen können. Für diejenigen, die es vielleicht nicht wissen, die PATH-Umgebungsvariable ist das, was Ihre Konsole ansieht, wenn sie versucht, die ausführbare Datei zu finden, die dem von Ihnen eingegebenen Befehl entspricht. Also können wir speziell dafür ./node_modules/.bin/ hinzufügen zu unserem PATH, vorzugsweise vor dem Pfad zu den npm globals, aber nach praktisch allem anderen (aus Sicherheitsgründen siehe die Kommentare von Francesco; Sie sollten auch direnv in Betracht ziehen, wenn Sie sich auf einer Unix-basierten Maschine befinden) also das lokale Binärdateien werden gegenüber den globalen npm-Paketen priorisiert.

Ich persönlich habe auch ../node_modules/.bin hinzugefügt , und ../../node_modules/.bin zu meinem PATH hinzufügen, damit ich tiefer in die Dateistruktur meines Projekts eintauchen und trotzdem die Befehle ausführen kann, die ich brauche. Wenn Sie sich nicht sicher sind, wie Sie Ihren PATH ändern können, überprüfen Sie hier, ob Sie Windows verwenden, und hier, wenn Sie einen Unix-basierten Computer verwenden.

Schlussfolgerung

Das hat mir die Sache viel einfacher gemacht, zumindest wenn ich gerade erst mit einem neuen Tool anfange. Im Allgemeinen wird nach einer Weile des Experimentierens sowieso alles in npm-Skripten landen. Wie auch immer Sie es tun, ich hoffe, dies hilft Ihnen dabei, diese Module als Abhängigkeiten für alle anderen zu speichern, die möglicherweise an Ihrem Projekt arbeiten. Gott segne und frohes Programmieren!

P.S. Sie können Ihren Code-Editor auch einfach so einrichten, dass er Ihre Skripte auf Knopfdruck ausführt, anstatt nur die Befehlszeile direkt zu verwenden. Ich neige dazu, die Build-Tools von Sublime Text für meine Projekte zu verwenden, sodass ich nur ein paar Tastenanschläge verwenden kann, um meine am häufigsten verwendeten Skripte abzufeuern.