Odpowiedzi:
Możesz użyć --prefixopcji:
mkdir -p ./install/here/node_modules
npm install --prefix ./install/here <package>
Pakiety zostaną wówczas zainstalowane ./install/here/node_modules. Jest mkdirto konieczne, ponieważ npm może w innym przypadku wybrać już istniejący node_moduleskatalog 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.jsonw {prefix}. Moim celem jest również umożliwienie rootowi packages.jsonw projekcie rootowania i jednoczesne zainstalowanie wszystkich pakietów {project root}/{project webroot}.
npm install, ale --prefixwydaje 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_modulesfolder w folderze
<path/to/prefix_folder>/lib/node_modules
requireinstalować 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_modulesfolder, nawet jeśli node_moduleskatalog już istnieje w wyższej hierarchii. Możesz również mieć package.jsonw bieżącym katalogu, a następnie zainstalować go w określonym katalogu za pomocą --prefixopcji:
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 --prefixopcję. Rozwiązuje się zgodnie z dokumentacją npm na folderach , tylko gdy npm installjest używany bez --prefixopcji.
Can't install <current directory>: Missing package name
package.jsonpliku w./install/here