So vermeiden Sie die Installation von Paketen in Monorepo mit Yarn

10

Ich baute eine monorepo mit Lerna und Yarn Workspaces .

Alles funktioniert gut, aber jedes Mal, wenn ich eine neue Abhängigkeit von einem Paket installiere (nennen wir ihn A ) , benutze ich :

yarn add <package_name>

Yarn fügt es hinzu und löst dann das installSkript aller Pakete im Monorepo aus, auch der Pakete, auf die sich A nicht verlässt.

Es gibt es trotzdem, um dies zu vermeiden? Es dauert einen Moment, bis sie ohne Grund installiert sind.

Erazihel
quelle
Sie haben also sowohl Lerna- als auch Garnpakete verwendet? Warum nicht einfach Lerna? Haben Sie auch versucht, das Paket mit Lerna hinzuzufügen und einen Bereich festzulegen? github.com/lerna/lerna/tree/master/commands/add
kbariotis
Ich verwende Lerna, um meine Pakete und Garnarbeitsbereiche zu veröffentlichen und zu versionieren, um Abhängigkeiten einfach zu verwalten. Ich habe Ihren Vorschlag ausprobiert und es hat nicht funktioniert. Vielen Dank für den Versuch :)
Erazihel

Antworten:

4

Versuchen Sie, dem spezifischen Arbeitsbereich Folgendes hinzuzufügen: -

yarn workspace <workspace_name> add <package_name>

Einige Dokumente finden Sie hier

Ezrqn Kemboi
quelle
Ich möchte die Abhängigkeit nicht für den gesamten Arbeitsbereich installieren, sondern nur für ein Paket
Erazihel
4

Sie können Garn 2 mit nodeLinker: node-modulesin versuchen .yarnrc.yml. Garn 2 garantiert, dass die Neuerstellung nur für Pakete ausgelöst wird, deren Abhängigkeiten geändert wurden. Dies wurde von Garn 1 nicht garantiert. Es wird jedoch immer noch sehr selten vorkommen, dass scheinbar nicht verwandte Pakete neu erstellt werden, wenn sie nach dem Hinzufügen eines neuen Pakets anders gehisst werden , aber das wird sehr selten passieren.

Viktor Vlasenko
quelle
Ich habe Ihren Vorschlag ausprobiert, aber es scheint, dass das Ergebnis leider immer noch das gleiche ist ...: /
Erazihel
4

Fügen Sie mithilfe von scope das Paket dem jeweiligen Modul hinzu.

lerna add some_package_1 --scope=some_module_x

Mehr: https://github.com/lerna/lerna/tree/master/commands/add#readme

xdeepakv
quelle
Das hat @kbariotis in einem Kommentar zu meiner Frage vorgeschlagen. Ich habe es versucht und das Ergebnis ist immer noch das gleiche.
Erazihel
Kannst
du
Ich habe es getan und wieder ist das Ergebnis immer noch das gleiche
Erazihel