2017-04-30 3 views
2

Ich gehe davon aus, wenn ich npm Paket sagen, reagieren zum ersten Mal mitWas macht Garn --prefer-offline?

yarn add react 

diesem installieren Datei im lokalen Cache speichern reagieren. Ich fand .yarn-cache, um viele Dateien zu enthalten. Ich nehme an, es ist Garn lokalen Cache-Ordner, so dass, wenn ich in Zukunft wieder zu installieren, wird es aus dem lokalen Cache installiert werden, nicht?

Wenn ich brauche reagieren in der Zukunft wieder zu installieren, sollte ich einfach schreiben

yarn add react 

oder

yarn add react --prefer-offline 

?

Antwort

5

Mein Verständnis ist, dass standardmäßig Garn immer versuchen wird, das Paket aus dem Internet zu downloaden, wenn Sie es installieren/wiederherstellen, und speichert das auch im Cache, was bedeutet, dass in Zukunft, wenn Sie versuchen, zu installieren/Wiederherstellen und keine Internetverbindung haben, kann sie auf den Cache zurückgreifen und von dort bei Bedarf installieren. Indem Sie --prefer-offline angeben, kehren Sie dieses Verhalten um, so dass es zuerst den Cache überprüft und nur versucht, das Paket aus dem Internet herunterzuladen, wenn es nicht im Cache gefunden werden kann. Dies kann Ihre Installation/Wiederherstellung erheblich beschleunigen und wiederholbare Builds ermöglichen, aber Sie erhalten möglicherweise nicht die neuesten Versionen (z. B. wenn Sie Versionsspezifikationen wie ~ 1.2.3 verwenden). Es gibt auch eine --offline Option, die einen Fehler auslöst, wenn sie kein Paket in Ihrem lokalen Cache finden kann (d. H. Es wird niemals versucht, aus dem Internet herunterzuladen).

Mehr Infos unter https://yarnpkg.com/blog/2016/11/24/offline-mirror/

-1

A quite popular guy hier bei S.O. sagte:

"Lesen Sie die Quelle, Luke!"

Und hier ist the source von yarn--prefer-offline Flagge CLI:

commander.option('--prefer-offline', 'use network only if dependencies are not available in local cache'); 

Viel Spaß!

2

Um --prefer-offline zu verwenden Sie zuerst Ihre Offline-Paket Repo-Setup.

Setup unsere Cache Lassen Sie sich in einem versteckten Verzeichnis im Home-Ordner:

yarn config set yarn-offline-mirror ./.npm-offline 

auch eine Config haben Garne reinigen Sie den dowloaded tarballs gesetzt:

yarn config set yarn-offline-mirror-pruning true 

Nun, wenn Sie yarn install laufen in Bei einem Projekt werden die Module in diesem Verzeichnis zwischengespeichert, die Sie dann mit yarn --prefer-offline abrufen können.

Wenn Sie später, vielleicht in einem neuen Projekt, aus dem Cache installieren möchten, müssen Sie die gewünschte Modulversion angeben, da es kein Konzept latest hat.Einfachste ist einfach zu versuchen, hinzuzufügen:

diese Drucke
yarn add moment 

Auf meinem Rechner:

error Couldn't find any versions for "moment" that matches "latest" in our cache. 
Possible versions: "2.1.0, 2.13.0, 2.17.0, 2.17.1, 2.18.1, 2.19.1, 2.19.2, 2.19.3, 2.8.4" 
// Note that above is not in semver order... 

ich dann neueste offline mit installieren:

yarn add [email protected] 

das Garn Blog post von @ erwähnt adrian erklärt, wie man einen Cache pro Projekt speichert und wie man das für sein Team festlegt, falls gewünscht. Ich selbst benutze nur einen Cache, um offline ideal neue Projekte starten zu können.

+0

Soll dieser --prefer-offline-Befehl Standardverhalten auf den "Garn hinzufügen" -Prozess anwenden? Ich versuche ein eckiges Projekt mit Garn als Paketmanager zu erstellen, mit "ng new myproject". Dies muss mit Paketen geschehen, die bereits in den Cache heruntergeladen wurden (da unsere Organisation erfordert, dass diese Ressourcen aus Sicherheitsgründen gesperrt werden). Da der Winkel-Cli nicht scheint, Faden zu sagen, das Flag "--offline" zu verwenden, scheint die Anforderung des Cache-Speichers nicht wirksam zu sein. – eugene

+0

Es sieht nicht so aus, als ob Garn in seiner Konfiguration "offline" oder "prefer-offline" akzeptiert, so dass die Option out ist. Außerdem akzeptiert 'ng' nur' npm', 'garn' oder' cpnm', wie in 'ng set --global packageManager = *'. Also wäre mein Ansatz, 1) nicht "cpnm" installiert zu haben und 2) ein Bash-Skript in deinem Pfad namens "cpnm" zu erstellen, das Garn mit dem Flag "--prefer-offline" aufruft. Dann setze 'cpnm' als Standard-Paketmanager für' ng' – cyberwombat