npm yüklemesi devDependencies yüklemeyecek


255

Nedense pencereler ben çalıştırdığınızda npm installo yüklenmez devDependencies . AFAIK olmalı. Eğer çalıştırırsam npm install --dev devDependencies yüklenir. Neden devDependencies'inpm install yüklemediğini anlamıyorum , ancak yalnızca bağımlılıkları yükler. Sebebi ne olabilir? Nasıl düzeltebilirim?

Belki de benim package.json ile ilgili bir sorun var ? Yararlı olup olmadığı aşağıda listelenmiştir:

{
  "name": "try-brunch",
  "version": "0.1.0",
  "private": "true",
  "devDependencies": {
    "brunch": "^2.0.4",
    "cssnano-brunch": "^1.1.5",
    "javascript-brunch": "^1.8.0",
    "sass-brunch": "^1.9.2",
    "uglify-js-brunch": "^1.7.8"
  },
  "dependencies": {
    "jquery": "^2.1.4"
  }
}

5
Neden bunun için bir düzeltmeye ihtiyacımız var? Varsayılan olmalı! devDependencieskelimenin tam anlamıyla modülün geliştiricileri için bağımlılıklardır . Çoğumuz npm installonu geliştirmek yerine onu kullanmak için bir modül bahse girerim .
Константин Ван

Bir uygulama yazdığınızı ve bir günlükçü veya web paketi eklentisine ihtiyacınız olduğunu varsayalım. bunlar devdeps. bunların kurulması gerekir. npm bazı durumlarda bunları yüklemez.
Tristan Tzara

1
Yani, yükleme işlemi devDependenciesyalnızca paketi (uygulama) yazarken gereklidir . Kullanmak için gerektirmez devDependencies. Bu nedenle, devDependenciesek bayrakların kurulmasını gerektirir. Eğer npm installyüklü devDependencies varsayılan olarak , kullanıcıların sıra gereksiz paketleri tanınacak.
Константин Ван

Belgelendirilmiş davranış, npm ibenim klasörde yaptığımda py kapmak package.jsonve hem deps ve devdeps yükler olmasıdır. Bu şekilde çalışmak için tasarlanmış ve mantıklı ( örneğin webpack eklentileri de dahil olmak üzere tüm ihtiyacım var beklediğimden npm isonra git cloneyaptığım). Bu soru, gerçek davranış amaçlanandan farklı olduğunda bir hatayı giderir. pls, docs - docs.npmjs.com/cli/install adresine bir göz atın . Devdeps yüklememek için bir bayrak var, ancak varsayılan davranış onları kurmaktır, bu da mantıklıdır ve herkesin beklediği şeydir
Tristan Tzara

Beni her çektiğimde webpack eklentileri veya daktilo tipi defs veya başka bir geliştirici yüklemek için başka bir komut çalıştırmayı hatırlatmak için aklı başında herhangi bir neden görmüyorum. npm i amaçlanan, aklı başında ve belgelenmiş davranış her ikisi de bootstrap gerekir, bu yüzden dürüstçe bu sorunun bir standart olması gerektiğini söylediğini anlamıyorum
Tristan Tzara

Yanıtlar:


307

Yükleme için NPM belgelerini kontrol edin

İle --production(NODE_ENV ortam değişkeni üretimine ayarlandığında veya) bayrağı, npm devDependencies listelenen modülleri yüklenmez."

--only={prod[uction]|dev[elopment]}Argüman ya sadece devDependencies veya sadece sigara devDependencies bakılmaksızın NODE_ENV kurulu neden olacaktır."

Denedin mi

npm install --only=dev

Package.json'un yanlış olabileceğinden endişe ediyorsanız , yapılacak en iyi şey budur. Yeni bir klasör oluşturun ve çalıştırın:

npm init --yes

Sonra:

npm install --save-dev brunch@^2.0.4
npm install --save-dev cssnano-brunch@^1.1.5
npm install --save-dev javascript-brunch@^1.8.0
npm install --save-dev sass-brunch@^1.9.2
npm install --save-dev uglify-js-brunch@^1.7.8
npm install jquery@^2.1.4 --save

Ve gitmek için iyi olmalısın! Aksi takdirde, diğer seçenekleri göndermeye devam eder.

Npm yapılandırmanızı kontrol edin:

npm config list

npm, yapılandırma ayarlarını komut satırından, ortam değişkenlerinden ve npmrc dosyalarından alır. Ortam değişkenlerini ve npmrc dosyasını kontrol edin .

Hala başarısız mısınız?

Tamam, ideal olarak dosya sisteminizde başka bir yerde yeni bir klasör oluşturun. yani. aynı klasör hiyerarşisinde değil. Örneğin, C: \ myNewFolder - C: tabanına ne kadar yakın olursa o kadar iyidir.

O zaman koş:

npm init --yes

Şimdi çalıştırın:

npm install underscore --save

ve sonunda:

npm install mocha --save-dev

Her şey beklendiği gibi çalışıyor mu?

Ne yapmaya çalışıyorum sorununuzu küresel veya önceki klasör ve bağımlılıklar için yerel bir şey olup olmadığını anlamaktır.


Tristan - bu durumunuza yardımcı oluyor mu? Lütfen cevabı doğru olarak işaretleyebilir misiniz, yoksa yukarıdaki denemenin sonucunu bana bildirin?
arcseldon

2
npm install --only = dev devdeps yükler, ama aynı anda hem deps ve devdeps yüklemek istiyorum. package.json iyi görünüyor, çünkü yeniden oluşturmak hiçbir şeyi değiştirmiyor. NODE_ENV'nin hem global olarak, varsayılan değer olarak hem de yerel olarak proje için bir değer olarak varlığını haklı mıyım? Pencerelerde bu değerleri nereden kontrol edebilir ve değiştirebilirim (baktım ve sistem değişkenim yok NODE_ENV)
Tristan Tzara

@TristanTzara - Bu günlerde neredeyse sadece MAC üzerinde çalışıyorum. Ancak, geçtiğimiz günlerin anılarından (yıllar önce NT ve XP'de) - komut istemi penceresine "set" gibi bir şey yazabilirsiniz. . NODE_ENV ile bir "anahtar" arıyorsunuz. Şimdi bir windows seçeneği için google olacak ama yardımcı olması durumunda bunu gönderdi.
arcseldon

Buradan bağlantı kurun
arcseldon

@TristanTzara - bunu bilmek güzel. Bir düşünün, dizininizin üzerinde çalışmayan tüm üst dizinleri kontrol edin. Mevcut bir node_modules klasörünü arayın ... npm bir bağımlılığı çözümlemeye çalışırken yukarı doğru arama yapar ve varolan yüklü bir modülü dizin ağacından daha fazla alıp alt klasörüne yüklemeyi reddetmek gibi garip bir şey olabilir. . Her zamanki yer ana dizininiz altında .. İyi şanslar ve cevabımı kabul ettiğiniz için teşekkürler: D
arcseldon

86

Npm config üretim değerinin true olarak ayarlanıp ayarlanmadığını kontrol edin. Bu değer true olursa, dev bağımlılıklarını atlar.

Çalıştırmak npm config get production

Ayarlamak için: npm config set -g production false


Acaba npm 5.x ve npm 6.x arasında bir yerde, değer ayarlanmamışsa, varsayılandan trueziyade false?
James Perih

38

env değişkeninin NODE_ENV'üretime' ayarlı olmadığından emin olun .

Bunu yaparsanız, dev bağımlılıkları --devbayrak olmadan yüklenmez


Sistem değişkenlerime bir göz attım ve orada bile yok. Belki de yanlış yere bakıyorum?
Tristan Tzara

13
npm install --devDevDependencies'i tekrar tekrar yüklediğini lütfen unutmayın . Bu neredeyse hiçbir zaman istediğiniz şey değildir ve aslında kullanımdan kaldırılmıştır .
Wonko

Teşekkür ederim. Bunun normal npm kurulumları üzerinde etkili olacağını bilmiyordum, ama bu bir mantık. :)
Lothre1

6
Kullanımı --devseçeneği kaldırılmıştır. --only=devBunun yerine kullanın
Sarath Ak

16

package-lock.jsonPaketimin eski bir sürümünden bir dosyam vardı . Json, bunu sildim ve her şey doğru bir şekilde kuruldu.


Bingo! Bu benim sorunumu çözdü. Görünüşe göre bunu repoya adamış olmalıydık.
randomor

9

Benzer bir sorun yaşadım. npm install --only=devişe yaramadı ve ikisi de işe yaramadı npm rebuild. Sonuçta, ben silmek zorunda kaldı node_modulesve package-lock.jsonve koşmak npm installtekrar. Bu benim için sorunumu çözdü.


7

Kurulum bağımlılıkları için kısa yolu yalnızca geliştirme için aşağıdaki gibi kullanabilirsiniz:

npm i -D <dependencies-names>

en iyi cevap. Shpuld üstte olacak
wwwwwwwwwwww

6

package.jsonGeçerli olduğundan emin olun ...

Aşağıdaki hatayla karşılaştım ...

npm WARN Invalid name: "blah blah blah"

ve benzer devDependenciesşekilde kurulmamasına neden oldu .

FYI, düzeltmek için package.json"adı" değiştirerek blah-blah-blah.


0

Aynı sorunu yaşıyorum çünkü NODE_ENV=productionDocker'ı oluştururken ayarladım . Sonra bir tane daha ekliyorum npm install --only=dev. Her şey yolunda gidiyor. TypeSciprt modülleri oluşturmak için devDependencies gerekir

RUN npm install
RUN npm install --only=dev
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.