Apa yang dilakukan flag --save dengan npm install


107

Saya melihat instruksi untuk menginstal paket dengan baik

npm install <package_name>

atau

npm install <package_name> --save

atau

npm install <package_name> --save-dev

Apa perbedaan antara opsi-opsi ini?

Jawaban:


94

npm install <package_name> --savemenginstal paket dan memperbarui dependensi di package.json Anda. Sejak pertanyaan ini ditanyakan, ada perubahan ke npm, yang --savetelah menjadi pilihan default, jadi Anda tidak perlu menggunakan --saveuntuk memperbarui dependensi.

npm install <package_name> --no_save menginstal paket tetapi tidak memperbarui dependensi seperti yang tercantum di package.json Anda.

npm install <package_name> ---save-devmemperbarui devDependenciesdalam paket Anda. Ini hanya digunakan untuk pengujian dan pengembangan lokal.

Anda dapat membaca lebih lanjut di https://docs.npmjs.com/getting-started/using-a-package.json .


3
Ini adalah jawaban teratas untuk pencarian google saya di "npm --save flag". Harap pertimbangkan untuk memutakhirkannya dengan informasi yang benar, yaitu --save sekarang menjadi default, dan --no-save diperlukan agar tidak memperbarui daftar dependensi di package.json
— Jonas Rosenqvist

54

npm install membutuhkan 3 tanda eksklusif, opsional yang menyimpan atau memperbarui versi paket di package.json utama Anda:

-S, --save: Paket akan muncul di dependensi Anda.

-D, --save-dev: Package akan muncul di devDependencies Anda.

-O, --save-optional: Paket akan muncul di dependensi opsional Anda.

Saat menggunakan salah satu opsi di atas untuk menyimpan dependensi ke package.json Anda, ada tanda tambahan opsional:

-E, --save-exact: Dependensi yang disimpan akan dikonfigurasi dengan versi yang tepat daripada menggunakan operator kisaran semver default dari npm. Selanjutnya, jika Anda memiliki npm-shrinkwrap.json, maka itu juga akan diperbarui.

<scope>bersifat opsional. Paket akan diunduh dari registri yang terkait dengan cakupan yang ditentukan. Jika tidak ada registri yang terkait dengan cakupan yang diberikan, registri default akan diasumsikan. Lihat npm-scope.

Catatan: jika Anda tidak menyertakan @ -symbol pada nama cakupan Anda, npm akan menafsirkannya sebagai repositori GitHub, lihat di bawah. Nama cakupan juga harus diikuti dengan garis miring.

Contoh:

npm install sax --save
npm install githubname/reponame
npm install @myorg/privatepackage
npm install node-tap --save-dev
npm install dtrace-provider --save-optional
npm install readable-stream --save --save-exact

Catatan: Jika ada file atau folder bernama <name>di direktori kerja saat ini, maka ia akan mencoba menginstalnya, dan hanya mencoba untuk mengambil paket dengan nama jika tidak valid.

(dari dokumen resmi) https://docs.npmjs.com/cli/install


52
Meskipun --saveopsi ini masih berfungsi, itu tidak lagi diperlukan - paket sekarang disimpan ke dependensi secara default . Logikanya sekarang terbalik - jika Anda tidak ingin menyimpan paket Anda, Anda perlu menentukan--no-save
— Coruscate5

Terima kasih, @ Coruscate5 menjawab pertanyaan saya dengan tepat.
— Kon

31

The --saveflag tidak lagi memiliki tujuan.

Sebelumnya, seperti yang dicatat dalam jawaban lain, --saveflag akan memperbarui dependensi dalam file proyek package.json, tetapi npm installsekarang menyertakan fungsionalitas ini secara default.

Pada titik ini jika Anda ingin mencegah npm installpenyimpanan dependensi, Anda harus menggunakan --no-saveflag.

Terima kasih kepada Coruscate5 karena menyebutkan ini dalam komentar mereka .

Info lebih lanjut di dokumentasi npm-install :

npm install menyimpan paket tertentu ke dalam dependensi secara default. Selain itu, Anda dapat mengontrol di mana dan bagaimana mereka disimpan dengan beberapa bendera tambahan:

-P, --save-prod: Paket akan muncul di dependensi Anda. Ini adalah default kecuali -D atau -O ada.

-D, --save-dev: Package akan muncul di devDependencies Anda.

-O, --save-opsional: Paket akan muncul di dependensi opsional Anda.

--tidak simpan: Mencegah penyimpanan ke dependensi.

Saat menggunakan salah satu opsi di atas untuk menyimpan dependensi ke package.json Anda, ada dua tanda tambahan opsional:

-E, --save-exact: Dependensi yang disimpan akan dikonfigurasi dengan versi yang tepat daripada menggunakan operator rentang semver default npm.

-B, --save-bundle: Dependensi yang disimpan juga akan ditambahkan ke daftar bundleDependencies Anda.


terima kasih atas jawaban yang diperbarui untuk mencakup situasi saat ini
— DrCord

Ini menjelaskan keraguan lama saya. Terima kasih
— Alok Ranjan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.