it-swarm.com.de

Wie kann ich für mehrere Projekte das node_modules-Verzeichnis freigeben?

Wenn ich Projekte mache, muss ich alle Abhängigkeiten von Knotenmodulen herunterladen. Gibt es die Knotenmodule trotzdem in mehreren Projekten gemeinsam, ohne die node_modules zu kopieren?

wie im Folgenden muss ich jedes Mal viele Befehle ausführen.

npm install gulp-usemin                                                                        
npm install gulp-wrap
npm install gulp-connect
npm install gulp-watch
npm install gulp-minify-css
npm install gulp-uglify
npm install gulp-concat
npm install gulp-less
npm install gulp-rename
npm install gulp-minify-html
49
verystrongjoe

Sie können ein node_modules -Verzeichnis unbedingt für Projekte freigeben. 

Aus Dokumentation des Knotens:

Wenn die Modul-ID, die an requir () übergeben wurde, kein natives Modul ist, und beginnt nicht mit '/', '../' oder './', dann beginnt der Knoten bei der Elternverzeichnis des aktuellen Moduls und fügt/node_modules und .__ hinzu. versucht, das Modul von diesem Ort aus zu laden.

Wenn es dort nicht gefunden wird, wird es in das übergeordnete Verzeichnis verschoben und so weiter, bis das Stammverzeichnis des Dateisystems erreicht ist.

Zum Beispiel, wenn die Datei bei '/home/ry/projects/foo.js' .__ heißt. required ('bar.js'), dann würde der Knoten an den folgenden Stellen in .__ suchen. diese Bestellung:

/home/ry/projects/node_modules/bar.js /home/ry/node_modules/bar.js /home/node_modules/bar.js /node_modules/bar.js

Fügen Sie einfach einen node_modules-Ordner in Ihr Projektverzeichnis ein und fügen Sie die gewünschten Module ein. Fordern Sie sie einfach wie gewohnt an. Wenn der Knoten in Ihrem Projektordner kein node_modules-Verzeichnis findet, wird der übergeordnete Ordner automatisch geprüft. Machen Sie Ihre Verzeichnisstruktur also so:

-myProjects --node_modules --myproject1 ---sub-project --myproject2

Auf diese Weise können auch Abhängigkeiten Ihres Unterprojekts auf das Haupt-Repository von node_modules zurückgreifen.

Ein Nachteil bei dieser Vorgehensweise ist, dass Sie Ihre package.json-Datei manuell erstellen müssen (es sei denn, jemand kennt einen Weg, dies mit Hilfe von Grunt oder etwas zu automatisieren). Wenn Sie Ihre Pakete installieren und --save arg zu einem npm install-Befehl hinzufügen, hängt es automatisch an den Abhängigkeitsabschnitt oder an package.json an, was praktisch ist.

52
tpie

Ich habe einen Trick gefunden, schauen Sie sich einfach die Symbolic Links (Symlinks) unter Windows oder Linux an , es funktioniert genauso wie Shortcuts, aber es ist mächtiger. 

Sie müssen einfach einen Junction für Ihren node_modules-Ordner an einem beliebigen Ort erstellen. Die Junction ist nichts weiter als eine Abkürzung zu Ihrem ursprünglichen node_modules-Ordner. Erstellen Sie es in Ihrem Projektordner, in dem die tatsächlichen node_modules erstellt worden wären, wenn Sie npm install verwenden.

Um dies zu erreichen, benötigen Sie mindestens einen node_modulesReal-Ordner und erstellen in den anderen Projekten eine Junction.

Unter Windows können Sie entweder die Eingabeaufforderung verwenden oder eine Anwendung verwenden. Mit der Eingabeaufforderung erhalten Sie ein bisschen mehr Kontrolle. Die Verwendung einer Anwendung ist einfacher. Ich empfehle Link Shell Extension .

9
Eymen Elkum

Versuchen Sie pnpm anstelle von npm. 

pnpm verwendet Hardlinks und Symlinks, um eine Version eines Moduls nur einmal auf einer Festplatte zu speichern. 

Installiere mit:

npm install -g pnpm

Um Ihre vorhandenen Installationen (und Unterverzeichnisse) zu aktualisieren, verwenden Sie:

pnpm recursive install
6
Benson

Das Hauptverzeichnis sollte so aussehen

node_modules
Project 1
Project 2
Project 3
Project 4

Öffnen Sie einfach die Datei Project 1/.angular-cli.json

Ändern Sie das Schema 

"$schema": "./node_modules/@angular/cli/lib/config/schema.json",

zu

"$schema": "./../node_modules/@angular/cli/lib/config/schema.json"

vergessen Sie nicht, node_modules leeren Ordner in Ihrem Projektverzeichnis zu erstellen

1
Shahzad Seraj

Bei der Betrachtung einiger Artikel scheint es, dass Lerna Ein gutes Werkzeug zum Verwalten mehrerer Projekte in einem einzigen Verzeichnis (monorepo) ist. Es unterstützt das Teilen von Modulen, ohne die gesamten Pakete in jedem Ordner zu duplizieren, und Befehle, um sie in mehreren Projekten zu installieren.

1
Chris

Nehmen wir an, dass ein einzelnes node_modules alle Pakete für alle Anwendungen enthalten sollte. So teilen Ihre Apps auch die meisten einzigartigen package.json-Einträge (nur der Name sollte sich ändern)

meine Idee wäre, eine einzige Root- und mehrere SRC-Ebene wie unten zu haben

root\package.json
root\node_modules
root\\..
root\app1\src\\..
root\app2\src\\..

das einzige Problem, mit dem Sie konfrontiert werden könnten, wäre ein Backup von Json (oder tsconfig) für jede App und stellen Sie sie wieder her, wenn Sie daran arbeiten, oder richten Sie Ihre Startskripts ein, um eine App bereitzustellen

0
Fabio Guerrazzi