Yanıtlar:
--prefix
Seçeneği kullanabilirsiniz :
mkdir -p ./install/here/node_modules
npm install --prefix ./install/here <package>
Daha sonra paketler kurulacaktır ./install/here/node_modules
. mkdir
Npm aksi zaten varolan seçebilirsiniz beri ihtiyaç duyulan node_modules
hiyerarşisinde yukarıya dizin yüksek olur. ( Klasörlerdeki npm belgelerine bakın .)
npm install
(paket adı olmadan) yolunu belirtmenin bir yolu var mı ? Ben daha sonra npm görünüyor doğrudan bu thired ama package.json
içinde {prefix}
. Ayrıca packages.json
, proje kökünde izin verebilmeyi ve aynı zamanda tüm paketleri yükleyebilmeyi hedefliyorum {project root}/{project webroot}
.
npm install
, ancak --prefix
bir özyinelemeye neden olmasaydı daha güzel bir çözüm gibi görünüyor.
Gelen belgeler bu dile getirilmiştir: önek seçeneğini kullanın küresel seçeneği ile birlikte :
Önek düğüm yüklü olduğu konuma varsayılan konfigürasyon dosyasında. Çoğu sistemde bu / usr / local'dir . Windows'ta bu, node.exe ikili dosyasının tam konumudur. Unix sistemlerinde, bir seviye yukarıdır , çünkü düğüm genellikle {prefix} /node.exe yerine {prefix} / bin / node'a kurulur .
Ne zaman küresel bayrağı ayarlandığında, npm bu önek içine şeyler yükler. Ayarlanmadığında, geçerli paketin kökünü veya bir paket içinde değilse geçerli çalışma dizinini kullanır.
(Vurgu onları)
Böylece kök dizininize
npm install --prefix <path/to/prefix_folder> -g
ve node_modules
klasörü klasöre yükleyecek
<path/to/prefix_folder>/lib/node_modules
require
Global olarak kurulmuş paketleri yapamazsınız, değil mi?
Npm sürüm 3.8.6'dan itibaren,
npm install --prefix ./install/here <package>
belirtilen dizine yüklemek için. NPM , üst hiyerarşide zaten node_modules
bir node_modules
dizin olsa bile otomatik olarak klasör oluşturur . package.json
Geçerli dizinde bir de olabilir ve ardından --prefix
seçeneği kullanarak belirtilen dizine yükleyebilirsiniz :
npm install --prefix ./install/here
Npm 6.0.0'dan itibaren,
npm install --prefix ./install/here ./
geçerli dizindeki package.json dosyasını "./install/here" dizinine kurmak için. Mac'te node_modules dizininde üst klasöre bir symlink oluşturduğunu fark ettiğim bir şey var. Ama hala çalışıyor.
NOT: NPM, --prefix
seçenek aracılığıyla belirttiğiniz yolu onurlandırır . Klasörlerdeki npm belgelerine göre , yalnızca seçenek npm install
olmadan kullanıldığında çözülür --prefix
.
Can't install <current directory>: Missing package name
package.json
dosyayı beklediği gibi çalışmaz./install/here