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?

Obromios
sumber

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 .

Obromios
sumber
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

Orange WebDev
sumber
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.

2xj
sumber
terima kasih atas jawaban yang diperbarui untuk mencakup situasi saat ini
DrCord
Ini menjelaskan keraguan lama saya. Terima kasih
Alok Ranjan