Saya memilikinya di file package.json saya (versi singkat):
{
"name": "a-module",
"version": "0.0.1",
"dependencies": {
"coffee-script": ">= 1.1.3"
},
"devDependencies": {
"stylus": ">= 0.17.0"
}
}
Saya menggunakan NPM versi 1.1.1 di Mac 10.6.8.
Ketika saya menjalankan perintah berikut dari root proyek, itu menginstal dependencies
dan devDependencies
:
npm install
Saya mendapat kesan bahwa perintah ini menginstal devDependencies
:
npm install --dev
Bagaimana saya membuatnya jadi npm install
hanya menginstal dependencies
(jadi lingkungan produksi hanya mendapatkan modul-modul), sementara sesuatu seperti npm install --dev
menginstal keduanya dependencies
dan devDependencies
?
dependencies
dandevDependencies
dan ketika masing-masing digunakan.Jawaban:
The
npm install
perintah akan menginstaldevDependencies
bersama lainnyadependencies
ketika dijalankan di dalam direktori paket, dalam lingkungan pengembangan (default).Gunakan
npm install --only=prod
(atau--only=production
) untuk menginstal sajadependencies
, dan tidakdevDependencies,
terlepas dari nilaiNODE_ENV
variabel lingkungan.Sumber: npm docs
Catatan: Sebelum v3.3.0 dari npm (2015-08-13), opsi dipanggil
--production
, yaitunpm install --production
.sumber
npm install yourpackage.tgz
juga tidak mendapatkan devDependencies. Namun, itu sudah terjadi. Lihat jawaban Kevin Cox di bawah ini ( stackoverflow.com/a/15826602/825588 ).NODE_ENV=production
dari hal lain yang saya lakukan dan tidak bisa mencari tahu mengapa sayanpm install
tidak menginstal dependensi. Terima kasih atas jawabannya.npm install --dev
hanya akan menginstal dependensi dev--dev
opsi sudah usang. Gunakan--only=dev
sebagai gantinya.Saya mengalami masalah itu juga! npm install agak membingungkan dan posting web terus memunculkan flag -d / - dev seolah-olah ada mode instal 'development' yang eksplisit.
npm install
akan menginstal " dependensi " dan " devDependensi "npm install --production
hanya akan menginstal " dependensi "npm install --dev
hanya akan menginstal " devDependencies "sumber
NODE_ENV
diatur keproduction
dan Anda menjalankannyanpm install
tidak akan menginstal dependensi dev. Saya mengalami masalah ini di Dockerfile saya.npm --production=false install
(meskipun tidak yakin apakah ini akan bekerja bersama bendera --dev)Opsi baru adalah:
Jika Anda ingin menginstal hanya devDependencies:
sumber
--only=prod
. Anda, Tuan, sebagian benar. ; PJika Anda membaca POST ini pada tahun 2016, silakan mencapai apa yang Anda inginkan dengan menggunakan
argumen akan menyebabkan hanya devDependencies atau hanya non-devDependencies yang diinstal terlepas dari NODE_ENV.
dari: https://docs.npmjs.com/cli/install
sumber
--production
dan--only={prod[uction]|dev[elopment]}
.Jika Anda telah menginstal semua dependensi Anda, dan Anda ingin menghindari harus mengunduh lagi paket produksi Anda dari NPM, Anda cukup mengetik:
Ini akan menghapus dependensi dev Anda dari
node_modules
folder Anda , yang berguna jika Anda mencoba mengotomatiskan proses dua langkah sepertiBerlari
npm prune
di antara keduanya akan menyelamatkan Anda dari keharusan menginstal ulang semuanya!sumber
Saat menggunakan "npm install", modul-modul dimuat dan tersedia di seluruh aplikasi Anda terlepas dari apakah itu "dependensi devD" atau "dependensi". Jumlah ide ini: semua yang didefinisikan package.json Anda sebagai dependensi (tipe apa pun) diinstal ke node_modules.
Tujuan untuk perbedaan antara dependensi / devDependencies / optionalDependencies adalah apa yang dapat dilakukan oleh pelanggan dari kode Anda w / npm untuk menginstal sumber daya ini.
Per dokumentasi: https://npmjs.org/doc/json.html ...
Namun, untuk menyelesaikan pertanyaan ini, jika Anda HANYA ingin menginstal "dependensi" menggunakan npm, perintah berikut adalah:
Ini dapat dikonfirmasi dengan melihat komit Git yang menambahkan filter ini (bersama dengan beberapa filter lain [tercantum di bawah] untuk menyediakan fungsionalitas ini).
Filter alternatif yang dapat digunakan oleh npm:
@dmarr coba gunakan npm install --production
sumber
npm akan menginstal dependensi dev ketika menginstal dari dalam suatu paket (jika ada
package.json
di direktori saat ini). Jika itu dari lokasi lain (npm registry, git repo, lokasi berbeda pada sistem file) itu hanya menginstal dependensi.sumber
npm install some-module
tidak akan menginstal dependensi devsome-module
.Saya telah menemukan bahwa, ketika mencoba untuk menginstal dependensi dev untuk paket yang berisi addon node, Anda tidak dapat menghindari membangun addon ketika menjalankan npm install --dev bahkan jika Anda hanya ingin menginstal devDependencies. Jadi, saya harus berkeliling npm:
Atau, lebih baik (dan lebih ringkas),
sumber
Gunakan
npm install packageName --save
ini akan menambah paket dalam dependensi , jika Anda menggunakannyanpm install packageName --save-dev
maka devDependencies .npm install packageName --save-dev
harus digunakan untuk menambahkan paket untuk tujuan pengembangan. Seperti menambahkan paket TDD (Chai, mocha, dll). Yang digunakan dalam pengembangan dan bukan dalam produksi.sumber
package.json
tetapi begitu dependensi ini sudah disimpan , maka bagaimana cara memaksanpm
untuk menginstal hanya satu tipe dependensi tertentu. Ketika saya membaca jawaban Anda di sini, saya tidak belajar apa pun yang membantu menyelesaikan masalah yang ditimbulkan oleh OP.Perlu disebutkan bahwa Anda dapat menggunakan
NODE_ENV
variabel lingkungan untuk mencapai hasil yang sama. Sangat berguna jika Anda menyimpan aplikasi Node Anda (misalnya Docker).Kode di atas akan menginstal semua dependensi Anda kecuali yang dev (yaitu
devDependencies
).jika Anda perlu menggunakan variabel lingkungan di
Dockerfile
informasi lebih lanjut Anda dapat ditemukan di sini .Variabel lingkungan mudah ditimpa kapan pun diperlukan (misalnya jika Anda ingin menjalankan test suite Anda, katakan pada Travis CI). Jika itu masalahnya Anda dapat melakukan sesuatu seperti ini:
Dokumentasi NPM di sini
Selamat kontainerisasi =)
sumber
Saya sarankan untuk digunakan
npm ci
. Jika Anda ingin menginstal hanya paket yang dibutuhkan produksi (seperti yang Anda tulis - tanpadevDependencies
), maka:atau
Jika Anda lebih suka oldschool
npm install
maka:atau
Inilah jawaban yang bagus mengapa Anda harus menggunakannya
npm ci
.sumber
npm ci
baik, bukan hanyanpm install
!Perlu ditambahkan ke jawaban yang dipilih: Sampai sekarang,
npm install
dalam direktori paket (mengandungpackage.json
) akan menginstal devDependencies, sedangkannpm install -g
tidak akan menginstalnya.sumber
-g
tidak akan menginstaldevDependencies
, tetapi menginstal paket secara global, yang seringkali bukan hasil yang diinginkan.npm install --production
adalah cara yang tepat untuk memasang modul simpul yang diperlukan untuk produksi. Periksa dokumentasi untuk lebih jelasnyasumber
Sekarang ada masalah, jika Anda memiliki package-lock.json dengan npm 5+. Anda harus menghapusnya sebelum menggunakan
npm install --production
.sumber
Dan, sesuai pertanyaan untuk menginstal dependensi saja, perintah berikut akan membantu
sumber