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?

Odpowiedzi:




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


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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.