Czy istnieje sposób na przeniesienie katalogu node_modules w aplikacji do, powiedzmy, / vendor / node_modules, tak jak robi to Bower z plikiem bowerrc? Myślałem, że można to określić w pliku package.json, ale nie mogę znaleźć rozwiązania. Twoja pomoc jest bardzo ceniona.
96
node_modules
inpackage.json
, a odpowiedź xShirase po prostu nie zapewnia sposobu, aby to zrobić.Odpowiedzi:
tak, możesz, po prostu ustaw zmienną env NODE_PATH:
export NODE_PATH='yourdir'/node_modules
Według doc:
Źródło
źródło
process.env
W skrócie: nie jest to możliwe i, jak się wydaje, nigdy nie będzie obsługiwane (zobacz tutaj https://github.com/npm/npm/issues/775 ).
Istnieje kilka niezrozumiałych problemów związanych z używaniem CLI lub ENV-Variables (zobacz aktualnie wybraną odpowiedź), .npmrc-Config-Files lub
npm link
- co je wszystkie mają wspólnego: nigdy nie są tylko specyficzne dla projektu, ale zawsze jakiś rodzaj zglobal
Solutions.Dla mnie żadne z tych rozwiązań nie jest naprawdę czyste, ponieważ współtwórcy twojego projektu zawsze muszą tworzyć specjalną konfigurację lub mieć specjalną wiedzę - nie mogą po prostu
npm install
i to działa.Więc: albo będziesz musiał umieścić swój plik package.json w tym samym katalogu, w którym chcesz zainstalować moduły node_modules, albo będziesz musiał żyć z faktem, że zawsze będą one znajdować się w katalogu głównym twojego projektu.
źródło
Przędza obsługuje tę funkcję:
# .yarnrc file in project root --modules-folder /node_modules
Ale Twoje wrażenia mogą się różnić w zależności od używanych pakietów. Nie jestem pewien, czy chciałbyś wejść do tej króliczej nory.
źródło
Nie jestem pewien, czy to właśnie miałeś na myśli, ale skończyłem na tym pytaniu ponieważ nie mogłem zainstalować
node_modules
wewnątrz katalogu mojego projektu, ponieważ został on zamontowany na systemie plików, który nie obsługuje dowiązań symbolicznych (folder „współdzielony” maszyny wirtualnej ).Znalazłem następujące obejście:
package.json
plik do folderu tymczasowego w innym systemie plikównpm install
tamnode_modules
katalog z powrotem do katalogu projektu, używająccp -r --dereference
do rozwinięcia linków symbolicznych do kopii.Mam nadzieję, że pomoże to komuś, kto trafi na to pytanie, szukając sposobu na przejście
node_modules
do innego systemu plików.Inne opcje
Istnieje inne obejście, które znalazłem w problemie na githubie, z którym @Charminbear jest połączony , ale to nie działa,
grunt
ponieważ nie jest obsługiwaneNODE_PATH
zgodnie z https://github.com/browserify/resolve/issues/136 :źródło