2016-05-10 23 views
5

Mam wiele devdepencencies w moim skryptu npm. npm install za pierwszym razem zajmuje kilka minut, to jest w porządku.NPM: Brak instalacji tylko - jak przyspieszyć instalację npm

Ale ponieważ integruję z serwerem budowania TFS, wystarczy tylko raz zainstalować. Po tym, instalacja npm po prostu marnuje czas, ponieważ zajmuje tylko 2-3 minuty, aby ustalić, które pakiety są już zainstalowane. Ponadto, wydaje się, że zawsze instaluje pakiety z flagą -g global, nawet jeśli już istnieje.

Jak mogę sprawdzić, czy pakiety istnieją, a jeśli tak, pominąć npm install?

+0

Czy używasz hostowanego agenta kompilacji? –

Odpowiedz

5

Możesz użyć npm-cache jako alternatywnego sposobu, jeśli używasz on-premise build agents do kompilacji.

Jest to użyteczne w procesach budowania uruchamianych [NPM | altana | kompozytor | jspm] instalować za każdym razem jako część procesu ich tworzenia. Ponieważ zależności nie zmieniają się często, często oznacza to wolniejsze czasy kompilacji. npm-cache pomaga złagodzić ten problem poprzez buforowanie wcześniej zainstalowanych zależności na maszynie budującej. npm-cache może być zamiennikiem dla każdego skryptu budującego, który uruchamia instalator [npm | bower | composer | jspm] .

Jak to działa

Po uruchomieniu NPM-cache zainstalować [npm | altana | jspm | kompozytor], najpierw szuka package.json, bower.json lub composer.json w prądzie katalog roboczy w zależności od tego, który menedżer zależności jest wymagany. Następnie oblicza wartość skrótu MD5 pliku konfiguracyjnego i wygląda dla pliku o nazwie .tar.gz w katalogu pamięci podręcznej (domyślnie $ HOME/.package_cache ). Jeśli plik nie istnieje, npm-cache korzysta z zainstalowanego zależności od zainstalowanego menedżera zależności zainstalowanego w systemie . Po zainstalowaniu zależności , npm-cache tars nowo pobrane zależności i przechowuje je w katalogu cache. Następnym razem, gdy pojawi się pamięci podręcznej npm i zobaczy ten sam plik konfiguracyjny, odnajdzie on archiwum tara w katalogu pamięci podręcznej i rozwiąże zależności w bieżącym katalogu roboczym .

Możesz także spróbować z npm-install-missing.

Jeśli jednak korzystasz z Hosted Build Agent VSTS, nie możesz tego zrobić, ponieważ za każdym razem, gdy budujesz kolejkę z Hosted Build Agent, do budowania przypisany jest agent czystej wersji. Oznacza to, że nie jest zainstalowany żaden pakiet zależności na agencie. Musisz wykonać pełną instalację npm.

+0

Dzięki za wyjaśnienie tego. Chciałbym móc użyć tego samego agenta kompilacji z moim własnym profilem użytkownika za każdym razem. No biggie, ponieważ zamierzamy przejść do wewnętrznego TFS, który będzie działał z pamięcią podręczną npm, ponieważ agent jest taki sam dla każdej wersji. – TetraDev