konfigurasi package.json

Jika Anda mengembangkan aplikasi Node.js dengan banyak paket npm, tidak jarang mengalami peringatan atau kesalahan saat Anda membangun proyek jika satu atau beberapa paket telah diperbarui. Terkadang terjadi konflik versi, atau versi paket telah dihentikan penggunaannya. Berikut adalah beberapa tips cepat untuk membantu Anda mengonfigurasi file package.json dan memahami apa yang terjadi saat Anda melihat peringatan atau kesalahan. Ini bukan panduan lengkap untuk package.json dan hanya difokuskan pada penerapan versi paket npm.

Sistem penerapan versi paket npm memiliki aturan yang ketat. Format versi dijelaskan di bawah ini:

[major].[minor].[patch]

Katakanlah Anda memiliki paket di aplikasi Anda dengan versi 5.2.1. Versi utamanya adalah 5, versi minornya adalah 2, dan patchnya adalah 1.

  • Dalam pembaruan versi utama, paket ini menyertakan fitur baru yang tidak kompatibel dengan versi sebelumnya, yaitu perubahan yang mengubah kompatibilitas.
  • Dalam pembaruan versi minor, fitur-fitur baru telah ditambahkan ke dalam paket yang tetap kompatibel dengan versi-versi paket sebelumnya.
  • Dalam pembaruan patch, satu atau beberapa perbaikan bug disertakan. Perbaikan bug selalu kompatibel ke belakang.

Perlu dicatat bahwa beberapa fitur paket npm memiliki dependensi. Misalnya, untuk menggunakan fitur baru dari paket kompilator TypeScript (ts-loader) dengan webpack, ada kemungkinan Anda juga perlu memperbarui paket npm paket webpack dan paket webpack-cli.

Untuk membantu mengelola penerapan versi paket, npm mendukung beberapa notasi yang dapat Anda gunakan di package.json. Anda dapat menggunakan notasi ini untuk mengontrol jenis pembaruan paket yang ingin Anda terima di aplikasi Anda.

Katakanlah Anda menggunakan React dan perlu menyertakan paket npm react dan react-dom . Anda dapat menentukannya dalam beberapa cara dalam file package.json Anda. Misalnya, Anda dapat menentukan penggunaan versi paket yang tepat sebagai berikut.

"dependencies": {
  "react": "16.4.2",
  "react-dom": "16.4.2",
},

Dengan menggunakan notasi sebelumnya, npm akan selalu mendapatkan versi yang tepat yang ditentukan, 16.4.2.

Anda dapat menggunakan notasi khusus untuk membatasi pembaruan pada pembaruan patch (perbaikan bug). Dalam contoh ini:

"dependencies": {
  "react": "~16.4.2",
  "react-dom": "~16.4.2",
},

Anda menggunakan karakter tilde (~) untuk memberi tahu npm agar hanya memperbarui paket saat di-patch. Jadi, npm dapat memperbarui react 16.4.2 ke 16.4.3 (atau 16.4.4, dll.), tetapi tidak akan menerima pembaruan ke versi utama atau minor. Jadi, 16.4.2 tidak akan diperbarui ke 16.5.0.

Anda juga dapat menggunakan simbol caret (^) untuk menentukan bahwa npm dapat memperbarui nomor versi minor.

"dependencies": {
  "react": "^16.4.2",
  "react-dom": "^16.4.2",
},

Dengan menggunakan notasi ini, npm dapat memperbarui react 16.4.2 ke 16.5.0 (atau 16.5.1, 16.6.0, dll.), tetapi tidak akan menerima pembaruan ke versi utama. Jadi, 16.4.2 tidak akan diperbarui ke 17.0.0.

Saat npm memperbarui paket, npm menghasilkan file package-lock.json, yang mencantumkan versi paket npm aktual yang digunakan di aplikasi Anda, termasuk semua paket bertingkat. Meskipun package.json mengontrol dependensi langsung untuk aplikasi Anda, itu tidak mengontrol dependensi berlapis (paket npm lain yang diperlukan oleh paket npm tertentu). Anda dapat menggunakan file package-lock.json dalam siklus pengembangan jika Anda perlu memastikan bahwa pengembang dan penguji lain menggunakan paket yang tepat yang Anda gunakan, termasuk paket berlapis. Untuk informasi selengkapnya, lihat package-lock.json dalam dokumentasi npm.

Untuk Visual Studio, file package-lock.json tidak ditambahkan ke proyek Anda, tetapi Anda dapat menemukannya di folder proyek.