Czy istnieje sposób, aby npm zdekompilować wszystkie moduły w node_modules? Coś jak odbudowa npm, która usuwa wszystkie artefakty budowy, ale ich nie odbudowuje?
Myślałem, że nigdy nie zapytasz. Sprawdzałem mój katalog node_modules w git zgodnie z zaleceniami mikealrogers.com/posts/nodemodules-in-git.html . Kiedy dodam nowy moduł lub zaktualizuję obecny, otrzymuję artefakty kompilacji w git, których nie powinno tam być i muszę je wyczyścić. Myślałem, że gdybym mógł je najpierw wyczyścić, proces przebiegałby trochę sprawniej.
Dave Causey,
1
Jedna krótka uwaga: teraz, gdy obsługuje NPM shrinkwrap(patrz npmjs.org/doc/shrinkwrap.html ), możesz zablokować wersje WSZYSTKICH swoich zależności (zamiast tylko tych najwyższego poziomu).
Michelle Tilley,
2
Brak tej funkcji jest również do bani w przypadku programowania międzyplatformowego. Tworzymy na Macu i uruchamiamy CI w Linuksie i musimy usunąć katalog node_modules i całkowicie przeinstalować za każdym razem, gdy robimy kompilację w systemie Linux, co marnuje mnóstwo czasu.
JBCP,
4
@JBCP, robisz to źle. To, co powinieneś zrobić, to zainstalować moduły w packages.json(używając npm --save) i umieścić node_moduleskatalog .gitignore(jeśli używasz git ). CI nie powinien ściągać twoich node_modules, ale wykonać npm install. Wreszcie, jeśli pobieranie z rejestru npm trwa zbyt długo, użyj czegoś takiego jak sinopia, aby go buforować.
Bojan Markovic
1
@BojanMarkovic - Masz rację, tak są teraz konfigurowane nasze projekty. Mój komentarz powyżej pochodzi sprzed około roku. Istnieje (było) kilka projektów, które zalecały wprowadzanie modułów node_modules do Gita, ale zdecydowanie nie jest to poprawne.
Spowoduje to usunięcie źródła node_modules, a także skompilowanych danych wyjściowych, więc nie odpowiada na pytanie.
theGecko
Jeśli masz zależności połączone z linkiem npm, równie dobrze możesz usunąć źródła tych modułów w ich katalogu źródłowym, co może być dość bolesne ...
cschuff
12
Dodałem to do mojego package.json: "clean": "rm -rf node_modules", "reinstall": "npm run clean && npm install", "rebuild": "npm run clean && npm install && npm run build",. Wydaje się, że działa dobrze.
Lucas
5
Dla Windows> rd node_modules / s
Ishara Samantha
2
@Lucas, powinieneś opublikować tę odpowiedź, ponieważ jest ona najbardziej odpowiednia
Joseph
57
Dodałem to do mojego pliku package.json:
"build":"npm build","clean":"rm -rf node_modules","reinstall":"npm run clean && npm install","rebuild":"npm run clean && npm install && npm run build",
Wydaje mi się bardzo dziwne, że taka podstawowa funkcjonalność, która jest faktycznie zalecana przez npm, wymaga hackowania. Co robią wszyscy inni? Po prostu zignoruj zalecenie i użyj npm install?
VitalyB
5
Jednym słowem nie .
Za dwie, jeszcze nie .
Istnieje jednak otwarta kwestia dotycząca pliku --no-build flagą umożliwiającą npm installwykonanie instalacji bez budowania, której można użyć do zrobienia tego, o co prosisz.
shrinkwrap
(patrz npmjs.org/doc/shrinkwrap.html ), możesz zablokować wersje WSZYSTKICH swoich zależności (zamiast tylko tych najwyższego poziomu).packages.json
(używającnpm --save
) i umieścićnode_modules
katalog.gitignore
(jeśli używasz git ). CI nie powinien ściągać twoich node_modules, ale wykonaćnpm install
. Wreszcie, jeśli pobieranie z rejestru npm trwa zbyt długo, użyj czegoś takiego jak sinopia, aby go buforować.Odpowiedzi:
Możesz po prostu usunąć katalog node_module
źródło
package.json
:"clean": "rm -rf node_modules", "reinstall": "npm run clean && npm install", "rebuild": "npm run clean && npm install && npm run build",
. Wydaje się, że działa dobrze.Dodałem to do mojego pliku package.json:
Wydaje się, że działa dobrze.
źródło
clean
musi być zdefiniowane w pliku package.json!Możesz skorzystać z polecenia „npm cache”, które pobiera paczkę z pakietami i rozpakowuje je do katalogu npm cache.
Następnie można skopiować źródło.
Korzystając z pomysłów zebranych z https://groups.google.com/forum/?fromgroups=#!topic/npm-/mwLuZZkHkfU opracowałem następujący skrypt węzła. Brak gwarancji, YMMV itp.
źródło
npm install
?Jednym słowem nie .
Za dwie, jeszcze nie .
Istnieje jednak otwarta kwestia dotycząca pliku
--no-build
flagą umożliwiającąnpm install
wykonanie instalacji bez budowania, której można użyć do zrobienia tego, o co prosisz.Zobacz ten otwarty problem .
źródło
Wypróbuj https://github.com/voidcosmos/npkill
znajdzie wszystkie moduły node_modules i pozwoli ci je usunąć.
źródło
W środowisku Windows:
źródło
Dodałem kilka wierszy do pliku package.json:
Jeśli
clean
tylko chcesz, możesz tego użyćrimraf node_modules
.źródło
W rzeczywistości istnieje specjalne polecenie do tej pracy
Usunie
node_modules
katalog i zainstaluje pakiety z uwzględnieniem twojegopackage-lock.json
plikuWięcej informacji: https://docs.npmjs.com/cli/ci.html
źródło