
Ich versuche, ein NPM-Paket mit mehreren Abhängigkeiten zu ändern. Die Ausführung dauert daher npm install -g .
sehr lange. Habe ich andere Möglichkeiten, als die Abhängigkeiten aus packages.json zu entfernen?
Antwort1
--no-optionalOption ist nun gemäß dieser Dokumentation implementierthttps://docs.npmjs.com/cli/install:
The --no-optional argument will prevent optional dependencies from being installed.
Antwort2
Wenn Sie das selbst entwickeln node_module
, verschwenden Sie Ihre Zeit nicht mit npm install
s, sondern verwenden Sie stattdessen npm link
.
Kurz gesagt, Sie erstellen einen symbolischen Link zu Ihrem Modulordner in einem globalen Ordner von npm und fordern npm dann in Ihrem App-Ordner auf, diesen symbolisch verknüpften Ordner zu verwenden.
Dadurch werden die Änderungen, die Sie im Modulordner vornehmen, sofort in Ihrer App angezeigt.
Hier sind die wichtigsten Schritte (kopiert aus dem unten verlinkten Tutorial, lesen Sie unbedingt das Tutorial wegen der wichtigen Fallstricke):
- CD zu
src/my_module
- Führen Sie "
npm link
" aus. Dadurch wird ein symbolischer Link von einem globalen Ordner zu demsrc/my_module
Ordner erstellt. - CD zu
src/my_app
- Führen Sie aus
npm link my_module
. Dies verknüpftnode_modules/my_module
dieses bestimmte Projekt mit dem globalen Ordner, sodassrequire
Aufrufe, diemy_module
danach suchen, es aus Ihrem Entwicklungsordner ladensrc/my_module
.
Sehen Sie sich dieses Tutorial an:http://justjs.com/posts/npm-link-developing-your-own-npm-modules-without-tears
Und die offiziellen Dokumente für npm link
:https://docs.npmjs.com/cli/link
Antwort3
Diese Funktion wurde bereits 2010 angefordert, aber leider ignoriert und geschlossen:https://github.com/npm/npm/issues/340
Ich habe eine Reihe von Optionen ausprobiert und schließlich eine ziemlich einfache Lösung gefunden: Benennen Sie package.json vor der Ausführung der npm-Installation in etwas anderes um und setzen Sie es nach Abschluss der Installation wieder auf diesen Namen zurück:
mv package.json package.bak
npm install <package_name> --no-save
mv package.bak package.json
Antwort4
Durchsuchendie Dokumentees scheint keine andere Option als den --no-optional
Schalter zu geben.
Ungetestet/unbestätigt
Dieses SO Q&A hat den Titel:npm install
installiert alle Abhängigkeiten meines Projekts über das Netzwerk, auch wenn diese bereits installiert oder im Cache verfügbar sindwürde bedeuten, dass es einen --skip-installed
Schalter gibt. In den Dokumenten wird dieser Schalter jedoch nicht erwähnt.