Musimy zintegrować testera Karmy z TeamCity i do tego chciałbym dać inżynierom sys mały skrypt (PowerShell lub cokolwiek), który:
wybierz pożądany numer wersji z pliku konfiguracyjnego (chyba mogę go wstawić jako komentarz bezpośrednio w
karma.conf.js
)sprawdź, czy zdefiniowana wersja karma runnera jest zainstalowana w globalnym repozytorium npm
jeśli nie, lub zainstalowana wersja jest starsza niż pożądana: wybierz i zainstaluj odpowiednią wersję
Uruchom:
karma start .\Scripts-Tests\karma.conf.js --reporters teamcity --single-run
Tak więc moje prawdziwe pytanie brzmi: „jak można sprawdzić skrypt, jeśli zainstalowana jest żądana wersja pakietu?”. Czy należy to sprawdzić, czy bezpiecznie jest po prostu zadzwonić npm -g install
za każdym razem?
Nie chcę zawsze sprawdzać i instalować najnowszej dostępnej wersji, ponieważ inne wartości konfiguracji mogą być niezgodne
źródło
npm update
szczególnie jeślinpm update -g
... nie robi tego większość groszku! Zobacz: github.com/npm/npm/issues/6247 i gist.github.com/othiym23/4ac31155da23962afd0enpm -g update
można bezpiecznie używać ponownie. github.com/npm/npm/issues/6247#issuecomment-92182814As of [email protected], 'npm update' will change package.json to save the new version as the minimum required dependency
docs.npmjs.com/cli/update.htmlnpm outdated
zidentyfikuje pakiety, które powinny zostać zaktualizowane, inpm update <package name>
można ich użyć do aktualizacji każdego pakietu. Ale przed [email protected]npm update <package name>
nie zaktualizuje wersji w pakiecie.json, co jest problemem.Najlepszy przepływ pracy to:
npm update
aby zainstalować najnowsze wersje każdego pakietuSprawdź,
npm-check-updates
aby pomóc w tym przepływie pracy.npm-check-updates
aby wyświetlić listę nieaktualnych pakietów (w zasadzie to samo, co uruchomienienpm outdated
)npm-check-updates -u
aby zaktualizować wszystkie wersje w pakiecie.json (jest to magiczny sos)npm update
jak zwykle, aby zainstalować nowe wersje swoich pakietów w oparciu o zaktualizowany pakiet.jsonźródło
npm outdated
pokaże WSZYSTKIE pakiety .. nawet w innych pakietach .. ale te nie zostaną zaktualizowane dzięki tej procedurze, więc zawsze będą się pojawiać .. więc po prostu użyjnpm-check-updates
(tak jak naprawdę zaleciłeś), który pokazuje tylko główne pakiety zpackage.json
... to jest istotnenpm install --all-outdated
ale nie jest ...npm update --save package_name
aby zapisać najnowszą zmianę w pliku package.json.npm update
vsnpm-check-updates
?Istnieje również „świeży” moduł o nazwie
npm-check
:Zapewnia również wygodny interaktywny sposób aktualizacji zależności.
źródło
Jeden prosty krok:
$ npm i -g npm-check-updates && ncu -u && npm i
To wszystko. Wszystkie wersje pakietu w
package.json
będą najnowszymi wersjami głównymi.Edytować:
Co tu się dzieje?
źródło
ncu
oznacza aktualizacje sprawdzania węzłów i-a
jest opcją „upgradeAll”. Znajdź wszystkie opcje tutaj: npmjs.com/package/npm-check-updatesnpx -p npm-check-updates ncu -u
Aby zaktualizować pojedynczy pakiet lokalny:
Najpierw sprawdź swoje nieaktualne pakiety:
npm outdated
Następnie zaktualizuj pakiet lub pakiety, które chcesz ręcznie, jako:
npm update --save package_name
W ten sposób aktualizacja
package.json
pliku lokalnego nie jest konieczna .Pamiętaj, że spowoduje to zaktualizowanie pakietu do najnowszej wersji.
Jeśli napiszesz jakąś wersję w swoim
package.json
pliku i wykonaj:npm update package_name
W takim przypadku otrzymasz tylko następną (stabilną) wersję stabilną dotyczącą wersji zapisanej w
package.json
pliku.Dzięki
npm list (package_name)
niemu możesz znaleźć aktualną wersję swoich lokalnych pakietów.źródło
Komendy NPM do aktualizacji lub naprawy luk w niektórych plikach manifestu zależności
Użyj poniższego polecenia, aby sprawdzić nieaktualne lub luki w zabezpieczeniach modułów węzła.
Jeśli zostaną wykryte jakiekolwiek luki, użyj poniższego polecenia, aby naprawić wszystkie problemy.
Jeśli to nie działa, spróbuj
Jeśli nie chcesz używać wymuszonej kontroli audytu, możesz ręcznie naprawić wersje zależności, zmieniając je w pliku package-lock.json i package.json . Następnie uruchomić
npm update && npm upgrade
źródło
Sprawdź nieaktualne pakiety
Sprawdź i wybierz pakiety do aktualizacji
npm oudated img
npx npm-check -u img
źródło
Brak dodatkowych pakietów, aby po prostu sprawdzić nieaktualne i zaktualizować te, które są, to polecenie wykona:
npm install $(npm outdated | cut -d' ' -f 1 | sed '1d' | xargs -I '$' echo '$@latest' | xargs echo)
źródło
Podczas instalowania pakietów npm (globalnie lub lokalnie) możesz zdefiniować konkretną wersję, używając
@version
składni do zdefiniowania wersji do zainstalowania.Innymi słowy, wykonanie:
npm install -g [email protected]
upewni się, że zainstalowana jest tylko wersja 0.9.2 i nie zostanie ponownie zainstalowana, jeśli już istnieje.Jako rada, sugeruję unikanie globalnych instalacji npm, gdziekolwiek możesz. Wiele osób nie zdaje sobie sprawy, że jeśli zależność definiuje plik bin, zostaje on zainstalowany na ./node_modules/.bin/. Często bardzo łatwa w użyciu jest lokalna wersja zainstalowanego modułu zdefiniowanego w pliku package.json. W rzeczywistości skrypty npm dodają ./node_modules/.bin do twojej ścieżki.
Jako przykład, oto pakiet.json, który po uruchomieniu
npm install && npm test
zainstaluje wersję karmy zdefiniowaną w moim pakiecie.json i użyje tej wersji karmy (zainstalowanej w node_modules / .bin / karma) podczas uruchamianiatest
skryptu:Daje to korzyść z pliku package.json definiującego wersję karmy do użycia i bez konieczności utrzymywania tej konfiguracji globalnie na twoim polu CI.
źródło
test
skrypcie? Czy możesz mi podać, jak zainstalować go za pomocą skryptu.npm test
. DokumentyPocząwszy od [email protected]+ , możesz po prostu zrobić:
Spowoduje to automatyczną aktualizację
package.json
pliku. Nie musimy ręcznie aktualizować najnowszej wersji, a następnie używaćnpm update <package name>
Nadal możesz uzyskać stare zachowanie za pomocą
( Odniesienie )
źródło
Aby naprawdę zaktualizować tylko jeden pakiet, zainstaluj NCU, a następnie uruchom go tylko dla tego pakietu. Spowoduje to wzrost do najnowszej wersji.
źródło