Odpowiedzi:
Możesz użyć --prefix
opcji:
mkdir -p ./install/here/node_modules
npm install --prefix ./install/here <package>
Pakiety zostaną wówczas zainstalowane ./install/here/node_modules
. Jest mkdir
to konieczne, ponieważ npm może w innym przypadku wybrać już istniejący node_modules
katalog wyżej w hierarchii. (Zobacz dokumentację npm dotyczącą folderów .)
npm install
(bez nazwy pakietu)? Sprawdziłem to bezpośrednio, ale potem npm szuka package.json
w {prefix}
. Moim celem jest również umożliwienie rootowi packages.json
w projekcie rootowania i jednoczesne zainstalowanie wszystkich pakietów {project root}/{project webroot}
.
npm install
, ale --prefix
wydaje się, że jest to ładniejsze rozwiązanie, jeśli nie powoduje rekurencji.
W dokumentacji jest powiedziane: Użyj opcji prefiksu razem z opcją globalną :
Prefiks config domyślne do miejsca, w którym jest zainstalowany węzeł. W większości systemów jest to / usr / local . W systemie Windows jest to dokładna lokalizacja pliku binarnego node.exe. W systemach Unix jest o jeden poziom wyżej, ponieważ węzeł jest zwykle instalowany w {prefix} / bin / node zamiast {prefix} /node.exe .
Po ustawieniu flagi globalnej npm instaluje różne rzeczy w tym prefiksie. Gdy nie jest ustawiony, korzysta z katalogu głównego bieżącego pakietu lub bieżącego katalogu roboczego, jeśli nie jest już w pakiecie.
(Nacisk przez nich)
Więc w swoim katalogu głównym możesz zainstalować
npm install --prefix <path/to/prefix_folder> -g
i zainstaluje node_modules
folder w folderze
<path/to/prefix_folder>/lib/node_modules
require
instalować pakietów globalnie, prawda?
Od wersji npm 3.8.6 możesz używać
npm install --prefix ./install/here <package>
zainstalować w określonym katalogu. NPM automatycznie tworzy node_modules
folder, nawet jeśli node_modules
katalog już istnieje w wyższej hierarchii. Możesz również mieć package.json
w bieżącym katalogu, a następnie zainstalować go w określonym katalogu za pomocą --prefix
opcji:
npm install --prefix ./install/here
Począwszy od npm 6.0.0, możesz używać
npm install --prefix ./install/here ./
aby zainstalować pakiet.json w bieżącym katalogu do katalogu „./install/here”. Jest jedna rzecz, którą zauważyłem na Macu, że tworzy ona dowiązanie symboliczne do folderu nadrzędnego w katalogu node_modules. Ale nadal działa.
UWAGA: NPM honoruje ścieżkę określoną przez --prefix
opcję. Rozwiązuje się zgodnie z dokumentacją npm na folderach , tylko gdy npm install
jest używany bez --prefix
opcji.
Can't install <current directory>: Missing package name
package.json
pliku w./install/here