Yanıtlar:
--prefixSeçeneği kullanabilirsiniz :
mkdir -p ./install/here/node_modules
npm install --prefix ./install/here <package>
Daha sonra paketler kurulacaktır ./install/here/node_modules. mkdirNpm aksi zaten varolan seçebilirsiniz beri ihtiyaç duyulan node_moduleshiyerarş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.jsoniç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 --prefixbir ö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_modulesklasörü klasöre yükleyecek
<path/to/prefix_folder>/lib/node_modules
requireGlobal 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_modulesbir node_modulesdizin olsa bile otomatik olarak klasör oluşturur . package.jsonGeçerli dizinde bir de olabilir ve ardından --prefixseç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, --prefixseçenek aracılığıyla belirttiğiniz yolu onurlandırır . Klasörlerdeki npm belgelerine göre , yalnızca seçenek npm installolmadan kullanıldığında çözülür --prefix.
Can't install <current directory>: Missing package name
package.jsondosyayı beklediği gibi çalışmaz./install/here