npm install tidak akan menginstal devDependencies

256

Di windows untuk beberapa alasan ketika saya menjalankannya npm installtidak akan menginstal devDependencies . AFAIK seharusnya. Jika saya menjalankan npm install --dev devDependencies diinstal. Saya tidak mengerti mengapa npm installtidak menginstal devDependencies juga, tetapi hanya menginstal dependensi. Apa yang bisa menjadi alasannya? Bagaimana saya bisa memperbaikinya?

Mungkin ada yang salah dengan package.json saya ? Di bawah ini tercantum jika mungkin bermanfaat:

{
  "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"
  }
}
Tristan Tzara
sumber
5
Mengapa kita bahkan perlu memperbaikinya ? Seharusnya default! devDependenciessecara harfiah dependensi untuk pengembang modul . Saya bertaruh sebagian besar dari kita npm installmodul untuk menggunakannya, daripada mengembangkannya.
Константин Ван
Katakanlah Anda menulis aplikasi, dan Anda memerlukan plugin logger atau webpack. mereka adalah devdeps. mereka perlu diinstal. npm tidak menginstalnya dalam beberapa kasus.
Tristan Tzara
1
Maksud saya, instalasi devDependencieshanya diperlukan saat Anda menulis paket (aplikasi). Menggunakannya tidak memerlukan devDependencies. Jadi masuk akal untuk devDependenciesmeminta bendera tambahan untuk dipasang. Jika npm installdiinstal devDependencies secara default , pengguna akan mendapatkan paket berlebihan juga.
Константин Ван
perilaku yang didokumentasikan adalah bahwa ketika saya melakukannya npm idi folder saya itu mengambil py package.jsondan menginstal deps dan devdeps. Ini adalah cara itu dimaksudkan untuk bekerja dan masuk akal (misalnya ketika saya lakukan npm isetelah git clonesaya berharap memiliki semua yang saya butuhkan, termasuk misalnya plugin webpack). Pertanyaan ini membahas bug, ketika perilaku aktual berbeda dari yang dimaksudkan. tolong , lihat docs - docs.npmjs.com/cli/install . Ada bendera untuk tidak memasang devdeps, tetapi perilaku default adalah menginstalnya, yang masuk akal dan apa yang diharapkan semua orang
Tristan Tzara
Saya tidak melihat alasan waras untuk membuat saya ingat untuk menjalankan perintah lain untuk menginstal mis. Plugin webpack atau def jenis huruf skrip atau devdeps lainnya setiap kali saya menarik. npm i harus mem-bootstrap keduanya, yang merupakan perilaku yang dimaksudkan, waras, dan terdokumentasi, jadi saya jujur ​​tidak mengerti mengapa Anda mengatakan bahwa masalah ini harus menjadi standar
Tristan Tzara

Jawaban:

306

Periksa NPM docs untuk instalasi

Dengan --productionflag (atau ketika variabel lingkungan NODE_ENV diatur ke produksi), npm tidak akan menginstal modul yang terdaftar di devDependencies. "

The --only={prod[uction]|dev[elopment]}argumen akan menyebabkan baik hanya devDependencies atau hanya non-devDependencies untuk diinstal terlepas dari NODE_ENV itu."

Sudahkah Anda mencoba

npm install --only=dev

Jika Anda khawatir paket Anda. Johnny mungkin salah, hal terbaik yang harus dilakukan adalah ini. Buat folder baru, dan jalankan:

npm init --yes

Kemudian:

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

Dan kamu harus baik untuk pergi! Jika tidak, akan terus memposting opsi lain.

Periksa konfigurasi npm Anda:

npm config list

npm mendapatkan pengaturan konfigurasi dari baris perintah, variabel lingkungan, dan file npmrc. Jadi periksa variabel lingkungan, dan file npmrc .

Masih gagal?

Oke, buat folder baru, idealnya di tempat lain di sistem file Anda. yaitu. tidak dalam hierarki folder yang sama. Misalnya, C: \ myNewFolder - semakin dekat ke basis C: semakin baik drive.

Lalu lari:

npm init --yes

Sekarang jalankan:

npm install underscore --save

dan akhirnya:

npm install mocha --save-dev

Apakah semuanya berfungsi seperti yang diharapkan?

Apa yang saya coba lakukan adalah memahami apakah masalah Anda bersifat global, atau sesuatu yang bersifat lokal pada folder dan dependensi sebelumnya.

arcseldon
sumber
Tristan - apakah ini membantu situasi Anda? Dapatkah Anda menandai jawabannya sebagai benar, atau biarkan saya tahu hasil dari mencoba di atas?
arcseldon
2
npm install --only = dev installs devdeps, tapi saya ingin menginstal deps dan devdeps sekaligus. package.json tampaknya baik-baik saja, karena menciptakan ulang tidak akan mengubah apa pun. Apakah saya benar bahwa NODE_ENV ada secara global, sebagai nilai default dan lokal, sebagai nilai untuk proyek? Di mana saya dapat memeriksa dan mengubah nilai-nilai ini di windows (Saya telah melihat dan saya tidak memiliki variabel sistem NODE_ENV)
Tristan Tzara
@TristanTzara - saya bekerja hampir secara eksklusif di MAC hari ini. Namun, dari kenangan masa lalu (bertahun-tahun yang lalu pada NT dan XP) - dapatkah Anda mengetik sesuatu seperti "set" ke jendela command prompt .. Lain pergi ke sesuatu seperti System Properties -> Advanced -> Variabel Lingkungan dan periksa entri Anda di sana . Anda mencari "kunci" dengan NODE_ENV. Saya akan google sekarang untuk opsi windows tetapi diposting ini jika itu membantu.
arcseldon
Tautkan di sini - winaero.com/blog/…
arcseldon
@ KristanTzara - itu bagus untuk diketahui. Satu pemikiran, periksa semua direktori induk di atas direktori Anda yang tidak berfungsi. Cari folder node_modules yang ada ... npm akan mencari ke atas ketika mencoba menyelesaikan dependensi dan itu mungkin sesuatu yang aneh seperti mengambil modul terpasang yang ada lebih jauh ke pohon direktori, dan karena itu menolak untuk menginstal Anda di folder anak. . Tempat yang biasa berada tepat di bawah direktori home Anda .. Semoga beruntung dan terima kasih telah mengakui jawaban saya: D
arcseldon
85

Periksa apakah npm config nilai produksi disetel ke true. Jika nilai ini benar, ia akan melewati dependensi dev.

Lari npm config get production

Untuk mengaturnya: npm config set -g production false

Shawn Mclean
sumber
Saya bertanya-tanya apakah, di suatu tempat antara npm 5.x dan npm 6.x, jika tidak ada nilai yang ditetapkan, standar menjadi truebukan false?
James Perih
38

pastikan Anda tidak memiliki NODE_ENVset variabel env ke 'produksi'.

Jika Anda melakukannya, dependensi dev tidak akan diinstal tanpa --devflag

Nir Levy
sumber
Saya telah melihat variabel sistem saya dan saya bahkan tidak memilikinya di sana. Mungkin saya melihat tempat yang salah?
Tristan Tzara
13
Harap dicatat bahwa npm install --devmenginstal devDependencies secara rekursif . Ini hampir tidak pernah seperti yang Anda inginkan, dan pada kenyataannya sudah usang .
Wonko
Terima kasih. Saya tidak tahu bahwa ini akan berdampak pada instalasi npm reguler, tapi ini logis. :)
Lothre1
6
Penggunaan --devopsi tidak digunakan lagi. Gunakan --only=devsebagai gantinya
Sarath Ak
16

Saya mempunyai package-lock.jsonfile dari versi lama package.json saya, saya menghapusnya dan semuanya terinstal dengan benar.


sumber
Bingo! Itu memecahkan masalah saya. Sepertinya kita harus melakukan ini ke dalam repo.
Randand
9

Saya punya masalah serupa. npm install --only=devtidak bekerja, dan juga tidak npm rebuild. Pada akhirnya, saya harus menghapus node_modulesdan package-lock.jsondan menjalankan npm installlagi. Itu memperbaikinya bagi saya.

programmer obsesif
sumber
7

Anda dapat menggunakan cara singkat untuk dependensi instalasi hanya untuk pengembangan sebagai berikut:

npm i -D <dependencies-names>
Ale
sumber
jawaban Terbaik. Harus berada di atas
wwwwwwwwwwww
6

Pastikan Anda package.jsonvalid ...

Saya memiliki kesalahan berikut ...

npm WARN Invalid name: "blah blah blah"

dan itu, juga menyebabkan devDependenciestidak diinstal.

FYI, mengubah package.json"nama" untuk blah-blah-blahmemperbaikinya.

Alex Gray
sumber
0

Saya memiliki masalah yang sama karena saya mengatur NODE_ENV=productionsementara membangun Docker. Lalu saya menambahkan satu lagi npm install --only=dev. Semuanya bekerja dengan baik. Saya membutuhkan devDependencies untuk membangun modul TypeSciprt

RUN npm install
RUN npm install --only=dev
Phat Tran Ky
sumber