Haruskah saya memberikan atribusi untuk dependensi dev transitif?

Dec 23 2020

Saya sedang mengerjakan library / cli-tool untuk menggabungkan lisensi dependensi ke dalam satu file. Saat ini, saya sedang mencoba untuk lisensi mengumpulkan dari: dependensi langsung, transitif-dependensi dan langsung dev -dependencies .

Dengan kata lain, saya mencoba mengumpulkan lisensi paket, yang diinstal di node_modules. Ketergantungan dev transitif tidak diinstal oleh manajer paket, karena sifat ketergantungan dev itu sendiri.

Saya khawatir, apakah bagian kode dari dependensi transitif itu entah bagaimana dapat disertakan dalam paket yang diinstal.

Misalnya: Proyek "A" bergantung pada Paket "B". Paket "B" memiliki Transpiler "C" sebagai ketergantungan dev. Kode yang dihasilkan oleh Transpiler "C" dalam Paket "B" tidak hanya mencakup hasil transpilasi sederhana, tetapi juga beberapa polyfill untuk suatu fungsi, yang tidak tersedia di browser lama, dari Transpiler "C". Tetapi, karena Transpiler "C" adalah dev-dependency transitif, ia tidak diinstal di node_modules dari Project "A", jadi tanpa menginstalnya secara manual, lisensi Transpiler "C" -s tidak dapat diperoleh dengan benar, bukan? Bahkan jika kita bisa, kita harus mencari Transpiler "C" -s dependencies / dev-dependencies juga, dll, dll.

Dalam kasus hipotesis ini, kita hanya memiliki satu ketergantungan dev transitif, tetapi, dalam skenario dunia nyata, mungkin ada ratusan. Mungkin ada beberapa versi dari paket yang sama yang didefinisikan sebagai ketergantungan dev transitif dalam paket yang berbeda. Dengan menginstal dependensi dev transitif secara manual untuk mengumpulkan informasi lisensi, dependensi dev transitif ini dapat memiliki dependensi dev sendiri, yang juga perlu diinstal. Proses ini harus diulang sampai semua dev-dependency transitif dari semua dev-dependency transitif diinstal.

Pertanyaannya adalah: Haruskah saya peduli untuk mengumpulkan informasi lisensi tentang ketergantungan dev transitif? Dan jika saya harus, ke titik mana?

Saya sudah menangani dependensi transitif biasa, tetapi saya khawatir dengan dependensi dev transitif.

Jawaban

5 amon Dec 23 2020 at 20:09

Ini adalah skenario yang sangat rumit, itulah sebabnya alat kepatuhan lisensi otomatis hanya dapat digunakan sejauh ini. Analisis Anda tampaknya secara umum benar.

Dalam praktiknya, saya berharap bahwa lisensi B tidak hanya mencakup kode sumber asli B, tetapi juga kode transparan B (setidaknya jika B didistribusikan dalam bentuk transparan). Ini akan menghindari masalah dependensi dev transitif. Namun, ini menunjukkan masalah yang lebih umum: metadata lisensi mungkin tidak akurat, alasan lain mengapa alat otomatis hanya berfungsi sejauh ini.

Jika Anda mendesain alat tujuan umum, mungkin berguna untuk menambahkan opsi yang juga memicu analisis dependensi dev dan dependensi dev transitif, dengan mengambil metadata untuk alat yang disebutkan dalam metadata paket (tidak perlu benar-benar menginstalnya). Secara default, saya tidak mengharapkan ketergantungan dev memiliki efek langsung pada status perizinan (meskipun, seperti yang Anda jelaskan dengan benar, terutama polyfill dapat melanggar harapan ini).