Warum installiert Garn Entwicklungsabhängigkeiten, ich brauche aber nur die Builds?
Lesezeit: 3 Minuten
vdegenne
Wenn ich es benutze yarn add <package-name>Yarn installiert sowohl Abhängigkeiten als auch devDependencies von <package-name>. Ist es beabsichtigt?
Ich habe die Dokumentation überprüft, konnte jedoch keine Möglichkeit finden, die Installation der Entwicklungsabhängigkeiten zu verhindern. devDependencies sind die Abhängigkeiten, die zum Kompilieren der Quellen eines Pakets verwendet wurden. Wenn ich mich also in einer Produktionsumgebung befinde, benötige ich sie nicht.
kimy82
Verwenden --production=true (oder einfach --production oder --prod kurz gesagt). Es ist in der Tat normales Verhalten; Yarn geht davon aus, dass Sie sich in einem „Entwicklungs“-Kontext befinden, es sei denn, Ihre Umgebungsvariable NODE_ENV ist auf „Produktion“ gesetzt.
Nicht „kaputt“, sondern „schlecht gestaltet“ --prod Lädt immer noch herunter und „installiert“ dev Pakete, WENN Garn den „vollständigen Baum“ auflösen muss. Benutz einfach yarn install --production --frozen-lockfile und passend yarn.lock Und --production wird wie erwartet funktionieren.
– ddotsenko
5. Juli 2020 um 20:54
--production Flag ist für Garn 2.0 veraltet. Wie kann verhindert werden, dass Yarn 2.0 Entwicklungsabhängigkeiten installiert?
– Akshat
2. April 2021 um 5:45 Uhr
Zu spät zur Party, aber die neue Möglichkeit, dies in Yarn 2+ zu tun, ist die Verwendung von yarn workspaces focus --production --all: Yarnpkg.com/cli/workspaces/focus
– heute
8. Dezember 2021 um 14:41 Uhr
Leider habe ich keine Antwort, möchte aber darauf hinweisen, dass keine der oben genannten Aussagen zum Stand Januar 2022 korrekt ist. Yarn wird es tun stets Installieren Sie devDependencies unabhängig von den Optionen und der NODE_ENV-Umgebung.
– Widerstandsfähig
26. Januar 2022 um 1:07
Wie im Kommentar von @ddotsenko gesagt
Nicht „kaputt“, aber „schlecht gestaltet“ –-prod lädt weiterhin Entwicklungspakete herunter und „installiert“, WENN Garn den „vollständigen Baum“ auflösen muss. Nur verwenden yarn install --production --frozen-lockfile und das Zusammenpassen von Yarn.lock und –produktion wird wie erwartet funktionieren.
Das hat funktioniert, um ein 210 MB großes node_modules auf 70 MB zu entfernen, ähnlich wie npm Und pnpm.
NODE_ENV=production Verhindern Sie auch die Installation von DevDependencies
verwenden NODE_ENV=production als Umgebungen vor excute yarn oder yarn install
– zyfyy
7. Dezember 2021 um 4:26
Die vorhandenen Antworten scheinen den Sinn der Frage (einschließlich der akzeptierten Antwort) zu verfehlen.
Wenn ich anrufe yarn add <my-package>Yarn installiert sowohl Abhängigkeiten als auch devDependencies von <my-package>. Ist es normales Verhalten?
Nein, das hört sich nach einem Bug an. Ich sehe dieses Verhalten bei der neuesten Version von Yarn v1 nicht.
Wenn ich yarn add foo Zu meinem Projekt hätte ich dann Folgendes installieren sollen:
meine direkten Abhängigkeiten
foo
etwaige Abhängigkeiten von foo und ihre Abhängigkeiten rekursiv
nicht devAbhängigkeiten von foo
DevDependencies meines Projekts (sofern nicht verschiedene Produktionsflags/Variablen verwendet werden, die in anderen Antworten erwähnt werden)
(Soweit ich weiß, installiert Garn nicht automatisch Peer-Abhängigkeiten wie in neueren npm-Versionen)
Wenn Sie laufen yarn add Es kann davon ausgegangen werden, dass Sie sich in einem „Entwickler“-Kontext befinden.
Bei Yarn 2+ scheint sich Yarn auf PnP-Installationen zu konzentrieren, also auf eine inhaltsadressierbare Datenstruktur, die die klassische ersetzt node_modules und es wird davon ausgegangen, dass es Teil des Pakets ist, daher werden Paketquellen automatisch einbezogen devDependencies.
Nichtsdestotrotz, yarn workspaces focus <name> --production ermöglicht die Installation eines Workspace-Pakets ohne `devDependencies. Sehen https://yarnpkg.com/cli/workspaces/focus für mehr Informationen.
Bitte teilen Sie Ihre package.json und weitere Informationen über Ihre Umgebung mit, z. B. den Paketmanager, den Sie verwendet haben, Yarn|npm|pnpm sowie die Versionen und Systeminformationen.
– Nawaf Khalifa
15. September 2022 um 15:06 Uhr
Webvoid
Yarn verfügt über die Option –produktion, die dazu führt, dass nur Produktionsabhängigkeiten installiert werden. Dies wird angezeigt Hier
Bitte teilen Sie Ihre package.json und weitere Informationen über Ihre Umgebung mit, z. B. den Paketmanager, den Sie verwendet haben, Yarn|npm|pnpm sowie die Versionen und Systeminformationen.
– Nawaf Khalifa
15. September 2022 um 15:06 Uhr
14532900cookie-checkWarum installiert Garn Entwicklungsabhängigkeiten, ich brauche aber nur die Builds?yes