Czy można określić miejsce docelowe pakietu niestandardowego npm install
za pomocą flagi polecenia lub zmiennej środowiskowej?
Domyślnie lokalne instalacje npm kończą się w node_modules
bieżącym katalogu, ale chcę, aby zostały na przykład zainstalowane node_modules
w innym katalogu vendor/node_modules
. Jak mogę to zrobić?
./node_modules
, chcę, aby npm zainstalował je w podkatalogach./vendor/node_modules
. (Alborequire
d), ale nie chcę go instalować globalnie.Odpowiedzi:
TL; DR
Możesz to zrobić za pomocą
--prefix
flagi i--global
flagi *.* Mimo że jest to instalacja „globalna”, zainstalowane pojemniki nie będą dostępne z wiersza poleceń, chyba że
~/foo/vendor/node_modules
istnieją wPATH
.TL; R
Każdy konfigurowalny atrybut
npm
można ustawić w dowolnym z sześciu różnych miejsc. W kolejności ważności:--prefix ./vendor/node_modules
NPM_CONFIG_PREFIX=./vendor/node_modules
$HOME/.npmrc
lubuserconfig
param$PREFIX/etc/npmrc
lubuserconfig
parampath/to/npm/itself/npmrc
Domyślnie pakiety zainstalowane lokalnie trafiają do
./node_modules
. globalne trafiają doprefix
zmiennej konfiguracyjnej (/usr/local
domyślnie).Możesz uruchomić,
npm config list
aby zobaczyć aktualną konfigurację inpm config edit
ją zmienić.PS
Ogólnie
npm
dokumentacja jest bardzo pomocna. Sekcja folderów jest dobrym strukturalnym omówieniem npm, a sekcja config odpowiada na to pytanie.źródło
./vendor/node_modules/lib/bower
użyciunpm#3.8.0
No version provided in package.json
bins won't be accessible through the command line
. Program można oczywiście wywołać, używając pełnej ścieżkinpm install [email protected] -g --prefix c:\my_npm` calling
c: \ my_npm \ eslint --fix my.js`npm install
w katalogu A z plikiem package.json, pakiety zostaną zainstalowane w katalogu B. Wygląda na to, że to rozwiązanie dotyczy instalowanych pojedynczych pakietów.npm install
instaluje zależności lokalnie.npm install X -g -prefix "..."
instaluje moduł X do prefiksu,npm install -g -prefix "..."
instaluje bieżący pakiet do prefiksu.Jeśli chcesz to w konfiguracji, możesz ustawić konfigurację npm w następujący sposób:
lub
Sprawdź swoją konfigurację za pomocą
npm config ls -l
Lub jak mówi @pje i użyj
--prefix
flagiźródło
npm install
nadal będziesz instalować lokalnie,./node_modules
alenpm install -g
zainstalujesz"$(pwd)/vendor/node_modules"
. Mogę sobie wyobrazić takie ustawienia, a potem zapominam o tym i wracam później, zastanawiając się, dlaczego moje pakiety globalne działają dziwnie.W przypadku OSX możesz przejść do swojego użytkownika
$HOME
(prawdopodobnie / Users / yourname /) i, jeśli jeszcze nie istnieje, utwórz.npmrc
plik (plik używany przez npm do konfiguracji użytkownika) i utwórz katalog dla pakietów npm do być zainstalowane w (np. / Users / yourname / npm). W tym pliku .npmrc ustaw „prefiks” na nowy katalog npm, w którym będą instalowane „globalnie” pakiety npm; te "globalne" pakiety będą oczywiście dostępne tylko dla twojego konta użytkownika.W .npmrc:
prefix=${HOME}/npm
Następnie uruchom to polecenie z wiersza poleceń:
npm config ls -l
Powinien dać dane wyjściowe zarówno dla twojej własnej konfiguracji lokalnej, jak i dla globalnej konfiguracji npm, a powinieneś zobaczyć swoją lokalną konfigurację prefiksów odzwierciedloną, prawdopodobnie u góry długiej listy wyników.
Ze względów bezpieczeństwa zalecam to podejście do konfigurowania zachowania npm konta użytkownika w przypadku chowningu
/usr/local
folderów, które widziałem w innym miejscu.źródło
Na przykład w systemie Windows 7 można użyć następującego zestawu poleceń / operacji.
Utwórz osobistą zmienną środowiskową, podwójne ukośniki odwrotne są obowiązkowe:
%NPM_HOME%
C:\\SomeFolder\\SubFolder\\
Teraz ustaw wartości konfiguracyjne na nowe foldery (przykładowe nazwy plików):
npm config set prefix "%NPM_HOME%\\npm"
npm config set cache "%NPM_HOME%\\npm-cache"
npm config set tmp "%NPM_HOME%\\temp"
Opcjonalnie możesz wyczyścić zawartość oryginalnych folderów przed zmianą konfiguracji.
Usuń plik npm-cache
npm cache clear
Wymień moduły npm
npm -g ls
Usuń moduły npm
npm -g rm name_of_package1 name_of_package2
źródło
Po tym, jak sam tego szukałem, chcąc, aby kilka projektów ze współdzielonymi zależnościami było DRYer, znalazłem:
require()
require()
bin
iman
ścieżki do$PATH
npm link
( informacje ) pozwala na użycie lokalnej instalacji jako źródła globalnych→ trzymaj się metody Node i zainstaluj lokalnie
ref:
źródło