Czy istnieje opcja instalacji pakietu npm bez zależności?

21

Próbuję zmodyfikować pakiet npm z wieloma zależnościami. Wykonanie tego npm install -g .zajmuje dużo czasu. Czy mam inne opcje oprócz usuwania zależności z paczek.json?

Justin Dearing
źródło

Odpowiedzi:

18

- nie jest opcjonalna opcja jest teraz zaimplementowana zgodnie z tą dokumentacją https://docs.npmjs.com/cli/install :

The --no-optional argument will prevent optional dependencies from being installed.
Jurevert
źródło
7

Przeglądając dokumenty, wydaje się, że nie ma opcji poza --no-optionalprzełącznikiem.

Nie przetestowane / niepotwierdzone

To SO Q&A zatytułowane: npm installinstaluje wszystkie zależności mojego projektu przez sieć, nawet jeśli są już zainstalowane lub dostępne z pamięci podręcznej , wydaje się sugerować, że istnieje --skip-installedprzełącznik. Ale dokumenty nie zawierają żadnego odniesienia do tego przełącznika.

slm
źródło
7

Jeśli sam to rozwijasz node_module, nie marnuj czasu na npm installs, zamiast tego użyj npm link.

Krótko mówiąc, tworzysz dowiązanie symboliczne do folderu modułu w folderze globalnym będącym własnością npm, a następnie w folderze aplikacji prosisz npm o użycie tego dowiązania symbolicznego.

To powoduje, że zmiany, które wprowadzasz w folderze modułu, są natychmiast odzwierciedlane w Twojej aplikacji.

Oto główne kroki (skopiowane z samouczka, do którego link znajduje się poniżej, koniecznie przeczytaj samouczek dla ważnych gotchas):

  1. cd do src/my_module
  2. Uruchom „ npm link”. To tworzy symboliczne łącze z folderu globalnego do src/my_modulefolderu.
  3. cd do src/my_app
  4. Uruchom npm link my_module. Te linki node_modules/my_modulew tym konkretnym projekcie do folderu globalnej, tak że requirerozmowy szukający my_modulewiatr się załadowaniem go z folderu rozwoju src/my_module.

Zobacz ten samouczek: http://justjs.com/posts/npm-link-developing-your-own-npm-modules-without-tears I oficjalne dokumenty dotyczące npm link: https://docs.npmjs.com/cli/link

marmor
źródło
Nie zmienia mojej zaakceptowanej odpowiedzi, ale upvoting, ponieważ jest to przydatne w moim konkretnym przypadku.
Justin Dearing
4

Ta funkcja została zażądana w 2010 roku, ale niestety została zignorowana i zamknięta: https://github.com/npm/npm/issues/340

Wypróbowałem kilka opcji i w końcu znalazłem dość proste rozwiązanie - zmień nazwę pliku package.json na coś innego przed wykonaniem instalacji npm, a następnie przywróć go z powrotem po zakończeniu instalacji:

mv package.json package.bak
npm install <package_name> --no-save
mv package.bak package.json
Vitaliy Ulantikov
źródło
2
Wow, czy to naprawdę jedyny sposób? To niedorzeczne, powinna być flaga --ignore-packageczy coś takiego.
JacobTheDev,
2
To rozwiązanie jest dobre i do tej pory może być najlepszym rozwiązaniem na moje pytanie: stackoverflow.com/questions/53532845/…
aGuegu