Belirtilen bir dizine npm nasıl yüklenir?


Yanıtlar:


325

--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 .)


65
--Prefix seçeneğini kullanırsanız, bu alternatif dizinde package.json dosyasına sahip olmanız gerekir. Geçerli dizinde package.json'a sahip olmanın ve alternatif dizine kurmanın bir yolu var mı?

2
@fractal Bunun için cevabımı gör
yunzen

10
@coundy 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}.
automatix

Özyineleme sorunuyla karşılaştım. Bir kez çalışmasını söylemenin bir yolu var mı? Dizini değiştirip arayarak geçici olarak çözdüm npm install, ancak --prefixbir özyinelemeye neden olmasaydı daha güzel bir çözüm gibi görünüyor.
adi518

47

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

2
requireGlobal olarak kurulmuş paketleri yapamazsınız, değil mi?
Pavlo

3
@Pavlo Bu yardımcı oluyor mu? stackoverflow.com/questions/15636367/…
yunzen

1
Bunu cevaba eklemelisiniz.
Pavlo

6
@ Pavlo sanmıyorum. Bu OP'nin cevabı değil.
yunzen

@Pavlo Bir paket global olarak kuruluysa, onu her zamanki gibi yapmanız gerekir. Yani evet, global olarak kurulu bir pakete ihtiyacınız olabilir.
Rob Evans

43

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.


1
Bu işe yaramıyor, hep alıyorumCan't install <current directory>: Missing package name
Tibor Blenessy

1
@TiborBlenessy İkinci kurulum ifadesinden bahsettiğinizi varsayarsak. Lütfen geçerli dizininizde geçerli bir package.json dosyanız olduğundan emin olun. Hala çalışmıyorsa, bana npm sürümünüzü bildirin. Bu adımlar belirtilen npm sürümüyle çalışmak için kullanıldı. Ve eğer artık yapmazlarsa, derinlere dalmak ve temel nedene ulaşmak isterim ve belki de bir alternatif bulabilirim.
Rohit Sharma

1
@RohitSharma npm 6.0.0 kullanarak bu yöntem package.jsondosyayı beklediği gibi çalışmaz./install/here
Christian Ivicevic

@ChristianIvicevic npm install --prefix ./install/here ./ komutunu mevcut dizine "./install/here" dizinine kurmak için kullanabilirsiniz. Mac'te node_modules dizini içindeki üst klasöre bir symlink oluşturduğunu fark ettiğim bir şey var. Ama yine de npm 6.0.0 ile çalışıyor
Rohit Sharma

1
@Tanoro Üçüncü komut, yanıtta belirtildiği gibi symlink oluşturma özelliğiyle npm 6.0.0 ile çalışacaktır. Ben hiç npm v3.5.2 ile ilk 2 komut denedim, bu yüzden denedim npm belirli sürümü bahsetti. Lütfen yanıtı diğer sürümler için de çalışan komutlarla güncellemekten çekinmeyin.
Rohit Sharma

0

Bir powershell yapı kullanıyorum ve geçerli dizini değiştirmeden çalıştırmak için npm alamadım.

Start komutunu kullanarak ve sadece çalışma dizinini belirterek sonlandırıldı:

start "npm" -ArgumentList "install --warn" -wo $buildFolder
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.