Warum installiert Garn Entwicklungsabhängigkeiten, ich brauche aber nur die Builds?

Lesezeit: 3 Minuten

Benutzeravatar von vdegenne
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.

Benutzeravatar von kimy82
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.

Schauen Sie sich Yarn’s an Dokumentation.

  • Diese Funktionalität scheint aufgrund von fehlerhaft zu sein github.com/yarnpkg/yarn/issues/6323

    – Brodybits

    18. Juni 2019 um 1:54

  • 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

Benutzeravatar von Webvoid
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

1453290cookie-checkWarum installiert Garn Entwicklungsabhängigkeiten, ich brauche aber nur die Builds?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy