Kita semua tahu tentang pemasangan npm, tetapi sesetengah daripada anda mungkin tidak tahu tentang npm ci (pemasangan bersih). Perintah ini sangat berguna dalam persekitaran CI. Menggunakan npm ci boleh menjadikan saluran paip binaan anda lebih cepat dan lebih stabil. Mempelajari arahan ini membantu anda memahami lebih lanjut tentang pemasangan npm dan sebab package-lock.json & package.json sangat penting. Mengetahui asas ini memberi anda kejelasan yang lebih baik.
npm ci ialah arahan yang digunakan untuk memasang kebergantungan dalam projek, memfokuskan pada kelajuan dan ketekalan. Ia amat membantu dalam persediaan penyepaduan berterusan (CI).
Pemasangan Lebih Cepat:
npm ci melangkau mengemas kini package-lock.json. Ia betul-betul mengikut kebergantungan fail kunci, menjadikan proses lebih cepat dan boleh diramal.
Fail Kunci Tegas:
Ia menggunakan versi pergantungan yang tepat dalam package-lock.json. Jika terdapat sebarang ketidakpadanan antara package.json dan package-lock.json, ia akan menimbulkan ralat. Ini memastikan semua persekitaran (tempatan, CI, pengeluaran) menggunakan kebergantungan yang sama.
Bersihkan Batu Tulis:
Sebelum memasang, npm ci memadamkan folder node_modules untuk mula baharu.
Berikut ialah jadual rujukan pantas yang membuka banyak kawasan tersembunyi untuk anda dengan memahami perbezaan utama antara pemasangan npm dan npm ci:
Langkah | pasang npm | npm ci |
---|---|---|
1. Resolusi Ketergantungan | Menyelesaikan kebergantungan berdasarkan package.json dan mengemas kini package-lock.json untuk mencerminkan sebarang perubahan. | Melangkau resolusi, menggunakan versi tepat dalam package-lock.json tanpa merujuk kepada package.json untuk julat versi. |
2. Semakan Keserasian Versi | Memastikan kebergantungan memenuhi julat yang ditentukan dalam package.json, mengemas kini package-lock.json jika perlu. | Memerlukan versi dalam package-lock.json sepadan dengan package.json dengan tepat; gagal jika tidak segerak. |
3. node_modules Pembersihan | Memasang hanya pakej yang tiada atau dikemas kini tanpa mengalih keluar node_modules, mengekalkan kebergantungan sedia ada yang tidak berubah. | Padam node_modules sepenuhnya sebelum memasang semula semua yang baru. |
4. Penjanaan Fail Kunci | Menghasilkan package-lock.json baharu jika tiada; mengemas kininya berdasarkan perubahan package.json. | Memerlukan package-lock.json sedia ada dan gagal jika tiada atau tidak segerak dengan package.json. |
5. Segerakkan dengan package.json | Kemas kini package-lock.json untuk diselaraskan dengan mana-mana kebergantungan baharu, diubah suai atau dialih keluar dalam package.json. | Memerlukan package-lock.json untuk memadankan package.json dengan tepat; jika tidak, ia gagal, memastikan konsistensi versi yang ketat. |
6. Pemasangan Ketergantungan | Memasang kebergantungan ke dalam node_modules berdasarkan package.json, mengemas kini package-lock.json dengan mana-mana versi yang diselesaikan. | Memasang kebergantungan tepat seperti yang dinyatakan dalam package-lock.json, memastikan kebolehulangan dan mengabaikan julat versi dalam package.json. |
7. Pengubahsuaian Fail Kunci | Mengubah suai package-lock.json untuk memadankan perubahan package.json secara automatik. | Tidak mengubah suai package-lock.json tanpa mengira perubahan package.json, mengekalkan konsistensi. |
8. Permintaan Rangkaian | Mengambil sebarang kebergantungan baharu atau kemas kini yang tidak ditemui dalam node_modules. | Hanya mengambil kebergantungan yang disenaraikan dalam package-lock.json, melangkau semakan tambahan. |
9. Kelajuan | Lebih perlahan, disebabkan oleh resolusi pergantungan, kemungkinan kemas kini fail kunci dan pemasangan tambahan. | Lebih pantas, hanya menggunakan package-lock.json untuk pemasangan tepat, meminimumkan pemprosesan. |
10. Keutamaan Fail | package.json mengambil keutamaan: kebergantungan diselesaikan berdasarkannya dan package-lock.json dikemas kini untuk mencerminkan sebarang perubahan. | package-lock.json mengambil keutamaan: pemasangan menggunakan versi tepat daripadanya, mengabaikan package.json kecuali untuk menyemak ralat penyegerakan (gagal jika ia tidak sepadan). |
11. Kes Penggunaan Ideal | Terbaik untuk pembangunan tempatan apabila mengubah suai atau menambah kebergantungan. | Terbaik untuk persekitaran CI/CD, pengeluaran atau ketekalan, kelajuan dan kebolehulangan pada bila-bila masa adalah penting. |
Atas ialah kandungan terperinci npm i vs npm ci. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!