Articles

So verknüpfen Sie NPM mit einer lokalen Version Ihrer Abhängigkeit

Also … ich möchte eine lokale Version von moment für meine Kalender-Webanwendung erstellen.

Warum?

Weil moment keine klingonischen Darstellungen der Zeit enthält. Oder Borg, für diese Angelegenheit. Was für ein All-Inclusive-Zeitpaket umfasst keine fremden Kulturen!?

Der TL;DR: klonen Sie das Paket lokal irgendwo, installieren Sie npm seine Deps, npm link im Stammverzeichnis, und kehren Sie dann zu Ihrer auffälligen App zurück, die moment verwendet, im Stammverzeichnis npm link "moment"& Sie verwenden jetzt die lokale Version. Ich konnte Yarn Links nicht zum Laufen bringen. Nicht sicher, warum.

Richtig …

Ich gebe Garn in dieser Erklärung auf, weil ich nicht die gleiche Funktionalität wie NPM damit arbeiten konnte. Also wie auch immer, hier geht:

Ich möchte zwei Ordner konzentrieren.

my-calendar-app/node_modules/moment

und

Users/aid/desktop/local-modules/

Dann git clone... das Paket, das ich bearbeiten/verbessern möchte, *in* den Ordner local-modules.

Sobald ich dabei bin, führe ich npm install aus, um sicherzustellen, dass ich die richtigen Abhängigkeiten und Konfigurationen dafür habe (babelrc, webpack, dev und reguläre Abhängigkeiten).

In der lokalen gehe ich in moment.js oder was auch immer die Eingabedatei ist. Und ganz oben habe ich eine Konsole platziert.loggen Sie sich ein, nur um zu zeigen, dass wir die lokale / klingonische verwenden:

Benutzer/Hilfe/Desktop/local_modules/moment/moment.js

cd (im Terminal) in Ihr neues, lokales modules/ moment-Paketverzeichnis und geben Sie im Stammverzeichnis npm link ein. Um es klar zu sagen: Hier verknüpfen Sie eine lokale, geklonte, leicht geänderte Version eines npm-Pakets.

Also haben wir einen Indexlink zu diesem lokalen Paket erstellt. Die Terminalbestätigung für meine sieht folgendermaßen aus:

nach Eingabe von npm link in das neue, lokale Paket.

Navigieren Sie nun zurück zu Ihrem Hauptprojekt und teilen Sie ihm auf Stammebene mit, dass Sie die lokale Version verwenden möchten: –

cd /Users/aid/Projects/my-calendar-app && npm link "moment"

Das spuckt eine Bestätigung aus, dass Sie einem lokalen Modul:

Users/aid/Projects/my-calendar-app/node_modules/moment -> aid/.nvm/versions/node/v10.15.0/lib/node_modules/moment -> /Users/aid/Desktop/local-packages/moment

Das heißt im Grunde „Wenn ich für den Moment auf node_modules zeige, root auf Ihre npm—Links, für diese Version von node – und zeigen Sie auf diese lokale Version / Paket davon“.

Jetzt, wenn wir unsere App ausführen:

Die Chrome-Konsole / Konsole.protokolle werden angezeigt.

Es spuckt die Konsole aus.protokolle / Änderungen, die wir lokal vorgenommen haben.

Um den Link zu beenden, gehen Sie zurück zu Ihrer lokalen Version und geben Sie im Stammverzeichnis npm unlink --no-save moment ein. Führen Sie dann npm install .

Yay für NPM-Links. Yay für Des Lynham.