Wenn ich Projekte mache, muss ich alle Abhängigkeiten von Knotenmodulen herunterladen. Gibt es ohne Kopieren der node_modules überhaupt eine Möglichkeit, die zentralen node_modules in mehreren Projekten freizugeben?
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
require
d-Modul. Andernfalls gibt es keinen offiziellen "zentralen"node_modules
Ordner zur Verwendung mitrequire()
.npm install <npm_package_name> -g
Antworten:
Sie können ein node_modules-Verzeichnis absolut für Projekte freigeben.
Aus der Dokumentation des Knotens :
Legen Sie einfach einen Ordner node_modules in Ihr Projektverzeichnis und fügen Sie die gewünschten Module ein. Benötigen Sie sie einfach wie normal. Wenn node kein Verzeichnis node_modules in Ihrem Projektordner findet, überprüft es automatisch den übergeordneten Ordner. Machen Sie Ihre Verzeichnisstruktur also so:
Auf diese Weise können auch die Abhängigkeiten Ihres Unterprojekts auf Ihr Hauptrepository für node_modules zurückgreifen.
Ein Nachteil auf diese Weise ist, dass Sie Ihre package.json-Datei manuell erstellen müssen (es sei denn, jemand kennt eine Möglichkeit, dies mit Grunzen oder Ähnlichem zu automatisieren). Wenn Sie Ihre Pakete installieren und das Argument --save zu einem
npm install
Befehl hinzufügen, wird es automatisch an den Abschnitt "Abhängigkeiten" oder an "package.json" angehängt, was praktisch ist.quelle
Ich habe einen Trick gefunden. Schauen Sie sich einfach die symbolischen Links (Symlinks) unter Windows oder Linux an . Sie funktionieren wie Verknüpfungen, sind jedoch leistungsfähiger.
Sie müssen einfach einen Ordner
Junction
für Ihrennode_modules
Ordner erstellen, wo immer Sie möchten. Die Junction ist nichts anderes als eine Verknüpfung zu Ihrem ursprünglichen Ordner node_modules. Erstellen Sie es in Ihrem Projektordner, in dem die tatsächlichen node_modules erstellt worden wären, wenn sie verwendet worden wärennpm install
.Um dies zu erreichen, benötigen Sie mindestens einen
node_modules
echten Ordner und erstellen in den anderen Projekten eine Junction.Unter Windows können Sie entweder die Eingabeaufforderung oder eine Anwendung verwenden. Die Verwendung der Eingabeaufforderung gibt Ihnen ein bisschen mehr Kontrolle. Die Verwendung einer Anwendung ist einfacher. Ich schlage vor, die Link Shell-Erweiterung .
quelle
mklink /d node_modules (source dir)\node_modules
.node_modules
im Projektordner selbst zu sein, funktioniert dies. Ich muss nur daran denken, zum eigentlichennode_modules
Ordner zunpm install
in einer der "verbundenen" Apps ausgeführt werde?Versuchen Sie pnpm anstelle von npm.
Installieren mit:
Verwenden Sie zum Aktualisieren Ihrer vorhandenen Installationen (und Unterverzeichnisse):
quelle
Das Hauptverzeichnis sollte so aussehen
Öffnen Sie einfach die Datei
Project 1/.angular-cli.json
Ändern Sie das Schema
zu
und vergessen Sie nicht, einen
node_modules
leeren Ordner in Ihrem Projektverzeichnis zu erstellenquelle
In einigen Artikeln scheint Lerna ein gutes Werkzeug für die Verwaltung mehrerer Projekte in einem einzigen Verzeichnis zu sein (
monorepo
). Es unterstützt die gemeinsame Nutzung von Modulen, ohne die gesamten Pakete in jedem Ordner zu duplizieren, und Befehle, um sie in mehreren Projekten zu installieren.pnpm ist auch ein einfaches und effizientes Tool, das die Module, die bereits für andere Projekte installiert sind, nicht dupliziert.
quelle
Nehmen wir an, dass ein einzelnes node_modules alle Pakete für alle Anwendungen enthalten sollte. Daher teilen Ihre Apps auch die meisten eindeutigen package.json-Einträge (nur der Name sollte sich ändern).
Meine Idee wäre, eine einzelne Wurzel und mehrere src-Ebenen wie unten zu haben
Das einzige Problem, mit dem Sie möglicherweise konfrontiert werden, besteht darin, eine Sicherungskopie von json (oder tsconfig) für eine App zu erstellen und diese wiederherzustellen, wenn Sie daran arbeiten oder Ihre Startskripte für die Bereitstellung einer App einrichten
quelle