Alur kerja Node.js yang baik untuk menjaga agar paket tetap mutakhir?


8

Saya baru-baru ini mulai mengembangkan proyek di Node.js. Tentu saja, saat ini paket yang saya gunakan cukup baru karena saya mulai dari awal dan menggunakan versi terbaru, tetapi ada tingkat pergantian versi yang cukup tinggi untuk sebagian besar paket Node.js dan seringkali fitur tertentu akan menjadi usang atau jatuh, dan tentu saja kerentanan keamanan akan diperbaiki.

Karena sebagian besar paket saya ditentukan menggunakan sintaksis versi semantik ^1.2.3(tetap pada nomor versi utama yang diberikan untuk menghindari perubahan), setiap pembaruan penting di luar versi utama saat ini akan hilang.

Apa cara yang bijaksana untuk memastikan bahwa Anda tetap terbarui dengan ketergantungan Anda? Apakah perlu untuk melakukan, katakanlah, cek mingguan untuk pembaruan dependensi Anda ke dalam alur kerja Anda untuk memastikan Anda tidak ketinggalan? Dan untuk alasan ini, apakah itu ide yang baik untuk mencoba dan meminimalkan dependensi untuk meminimalkan rasa sakit karena berurusan dengan perubahan ketika Anda perlu memperbarui ke versi utama yang lebih baru?


1. Menyadari pembaruan paket, 2. Mengevaluasi perubahan yang dibuat dalam pembaruan, 3. Memutuskan apakah perubahan itu berguna dan relevan dengan proyek Anda. Jika ya, 4. Tingkatkan paket ke versi baru.
Robert Harvey

@Robert Harvey. Proyek simpul sederhana saya menggunakan sekitar selusin paket utama secara langsung, dengan kemungkinan seratus secara tidak langsung. Pendekatan Anda tidak berkembang. Ini adalah pertanyaan yang bagus untuk memeriksa apakah ada cara yang lebih mudah, lebih otomatis.
user949300

1
@ Jo, apakah Anda sudah melihat npm-check-updates atau npm outdatedperintah? Tidak pernah menggunakan diriku sendiri tetapi mereka terlihat seperti awal.
user949300

Jika Anda menggunakan GitHub, Anda mungkin ingin mencoba sesuatu seperti Greenkeeper yang akan menjalankan tes Anda terhadap versi baru dependensi Anda.
Whymarrh

Jawaban:


6

Ini adalah alur kerja yang saat ini saya gunakan untuk proyek dengan rilis bulanan.

  • Setelah rilis, buka dependensi dan perbarui yang hanya memiliki sedikit perubahan dan perbarui pembaruan. Karena npm mengikuti versi semantik, jika pembuat paket melakukan tugasnya dengan baik, ini seharusnya tidak merusak sistem Anda.
  • Lakukan tes asap dan jika ada ketergantungan rusak, buat tugas untuk pengembangan untuk memperbarui ketergantungan itu. Bisa jadi tiket, bisa jadi tugas untuk sprint Anda, dll. Intinya adalah memperbarui itu tidak langsung dan akan membutuhkan pekerjaan, jadi Anda harus menjadwalkannya. Umpan balik dari percobaan pertama Anda akan membantu.
  • Jadwalkan tugas untuk memperbarui dependensi yang memiliki perubahan besar.
  • Bekukan dependensi Anda ke versi terbaru.

Tujuannya bukan untuk memiliki pembaruan otomatis sama sekali. Mereka mungkin merusak sistem Anda dengan cara yang tidak Anda harapkan dan sangat mungkin ketika Anda membuat perubahan lain, yang tidak akan membantu dalam mencari tahu apa masalahnya.

Memperbarui dependensi harus menjadi proses yang disadari, dan jika ada yang merusak sistem Anda, Anda harus mengetahui yang mana.

Pembaruan kecil yang rusak dan tidak diperhatikan kemungkinan akan diambil dalam sprint pengembangan atau pengujian Anda, dan inilah mengapa Anda melakukannya setelah rilis, karena Anda ingin waktu yang banyak untuk mendeteksinya dan bereaksi terhadap masalah itu sebelum ditayangkan.

Perhatikan bahwa saya benar-benar menggunakan proses ini pada proyek dependensi .NET + Nuget, tetapi cukup banyak berlaku untuk Node dan npm / bower, Rails + bundle dll.

Akhirnya, Anda dapat menggunakan perintah yang bagus yang akan membantu Anda dalam membekukan / menghentikan ketergantungan, bahkan menambahkannya ke repo Anda. Lihat npm shrinkwrap.


0

Saya menggunakan solusi lain dengan pendekatan berbeda https://uptodatenpm.com, ia mengirimkan Anda buletin mingguan dengan informasi versi baru dari dependensi proyek Anda sehingga Anda dapat memutuskan deps mana yang akan diperbarui.

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.