2016-05-10 6 views
5

Ich habe eine Menge Devdepencenzien in meinem NPM-Skript. npm install dauert ein paar Minuten das erste Mal, das ist in Ordnung.NPM: Nur fehlende installieren - wie zu beschleunigen npm install

Aber da ich mit TFS-Build-Server integrieren, muss es nur npm einmal installieren. Danach vergeudet npm install nur noch Zeit, denn es dauert 2-3 Minuten, um festzustellen, ob die Pakete bereits installiert sind. Außerdem scheint es die Pakete immer mit dem Flag -g global neu zu installieren, selbst wenn es existiert.

Wie kann ich überprüfen, ob Pakete existieren, und wenn ja, überspringen Sie Npm installieren?

+0

Verwenden Sie den gehosteten Build-Agent? –

Antwort

5

Sie können npm-cache als eine alternative Möglichkeit verwenden, wenn Sie on-premise build agents für Build verwenden.

Es ist nützlich für Build-Prozesse, die ausgeführt werden [npm | Bower | Komponist | jspm] jedes Mal, als Teil ihrer Build-Prozess installieren. Da sich die Abhängigkeiten nicht oft ändern, bedeutet dies oft langsamere Build-Zeiten. npm-cache hilft, dieses Problem zu beheben, indem zuvor installierte -Abhängigkeiten auf der Erstellungsmaschine zwischengespeichert werden. npm-cache kann ein drop-in Ersatz für jedes Build-Skript sein, das [npm | bower | composer | jspm] installiert.

Wie es funktioniert

Beim Ausführen von NPM-Cache installieren [npm | Bower | jspm | Komponisten], ist es zunächst sucht nach package.json, bower.json oder composer.json im aktuellen Arbeitsverzeichnis abhängig davon, welcher Abhängigkeitsmanager angefordert wird. Er berechnet dann den MD5-Hash der Konfigurationsdatei und sieht für ein Feld namens .tar.gz im Cache-Verzeichnis ($ HOME/.package_cache standardmäßig). Wenn die Datei nicht existiert, verwendet npm-cache den installierten Abhängigkeitsmanager des Systems, um die Abhängigkeiten zu installieren. Sobald die Abhängigkeiten installiert sind, tarnt npm-cache die neu heruntergeladenen Abhängigkeiten und speichert sie im Cache-Verzeichnis. Das nächste Mal, npm-Cache läuft und sieht die gleiche Konfigurationsdatei, wird es die Tarball im Cache-Verzeichnis finden und entpacken Sie die Abhängigkeiten im aktuellen Arbeitsverzeichnis.

Und Sie können auch mit npm-install-missing versuchen.

Wenn Sie jedoch VSTS Hosted Build Agent verwenden, können Sie dies nicht tun, da jedes Mal, wenn Sie einen Build mit Hosted Build Agent in die Warteschlange stellen, ein reiner Build-Agent für den Build zugewiesen wird. Das bedeutet, dass auf dem Agenten kein Abhängigkeitspaket installiert ist. Sie müssen eine vollständige npm-Installation durchführen.

+0

Danke für die Erklärung. Ich wünschte, ich könnte jedes Mal denselben Build-Agent mit meinem eigenen Benutzerprofil verwenden. Kein Problem, denn wir werden auf das interne TFS migrieren, das mit dem npm-Cache funktioniert, da der Agent bei jedem Build gleich ist. – TetraDev