Apa perilaku yang diharapkan?
Proyek pdfjs-dist tidak boleh menyertakan webpack sebagai peerDependency karena dapat benar-benar berfungsi tanpanya saat memuat skrip dari direktori build.
Apa yang salah?
Saya menggunakan PDFJS dalam komponen untuk memvisualisasikan PDF menggunakan Angular 6. Tidak termasuk webpack dalam proyek saya (saya tidak membutuhkannya sama sekali), membuat popup peringatan peerDependency setiap kali saya menjalankan perintah npm atau setiap kali ada yang menginstal komponen saya .
Tepat. Memiliki webpack
sebagai "peerDependency"
dalam paket yang dapat didistribusikan seperti ini jelas salah dan harus dihapus.
Ketergantungan rekan ditambahkan di #9249 karena worker-loader
. Bisakah Anda menjelaskan sedikit tentang mengapa salah memilikinya di repositori kami? Saya baik-baik saja dengan menghapusnya jika itu pasti tidak akan merusak barang-barang.
Hai, @timvandermeij. Terima kasih untuk balasan Anda!
webpack
adalah alat pembangunan dan, dengan demikian, biasanya hanya masuk akal sebagai "devDependency"
- atau dibatasi untuk pipa pembangunan perpustakaan. Menyertakannya sebagai "peerDependency"
berarti pengguna harus menginstalnya secara lokal (walaupun mereka mungkin tidak membutuhkannya/tidak mempedulikannya) atau mengabaikan peringatan yang muncul setiap kali pada npm install
.
Saya tidak akrab dengan worker-loader
, jadi ambil komentar saya dengan sedikit garam. Tetapi jika itu seperti loader webpack
, mereka biasanya hanya diperlukan sebagai langkah konfigurasi build dan tidak ada yang lain. Juga, tidak masuk akal dalam konteks di mana perpustakaan dimaksudkan untuk digunakan di luar web (seperti Node).
Apakah pdf.js
bertindak sebagai semacam plugin webpack
dalam beberapa kasus? Jika _is_, _mungkin_ masuk akal untuk menyertakan loader dan webpack
sebagai dependensi. Tetapi, meskipun demikian, saya berpendapat bahwa dukungan semacam itu harus diekstraksi ke repo/modulnya sendiri.
Saya mengambil kebebasan forking repo dan mengambil semua webpack
terkait. Ini masih berfungsi dengan baik untuk saya di aplikasi Node saya.
Apakah ada rencana untuk menghapus webpack sebagai ketergantungan. @nfantone apakah Anda berencana mengirimkan PR?
@mishwakerman Saya tidak pernah benar-benar menerima tanggapan "resmi" untuk masalah ini - dan saya masih tidak tahu mengapa webpack
terdaftar sebagai ketergantungan. Intuisi saya (terbatas) memberi tahu saya bahwa ini adalah bagian dari masalah yang lebih besar di mana pdf.js
digabungkan ke beberapa bagian dari implementasinya yang secara tidak langsung bergantung pada webpack
dan perlu difaktorkan ulang dalam beberapa cara.
Pertanyaan ini juga ditanyakan di IRC dan kami mendapat jawaban ini: https://mozilla.logbot.info/pdfjs/20180606#c14862530 -c14862541. Singkatnya, saya tidak begitu akrab dengan bundling Webpack itu sendiri, tetapi jika itu benar-benar hanya untuk contoh, saya kira kita dapat menghapusnya. Silakan periksa apakah itu masalahnya sebelum mengirimkan PR.
Menutup karena melakukan ini bukanlah pilihan yang baik mengingat #9248 akan kembali jika kita melakukannya. Sebaliknya, yang harus kita lakukan adalah #9580 yang dibahas di IRC di https://mozilla.logbot.info/pdfjs/20180606#c14862530 -c14862634.
Komentar yang paling membantu
Hai, @timvandermeij. Terima kasih untuk balasan Anda!
webpack
adalah alat pembangunan dan, dengan demikian, biasanya hanya masuk akal sebagai"devDependency"
- atau dibatasi untuk pipa pembangunan perpustakaan. Menyertakannya sebagai"peerDependency"
berarti pengguna harus menginstalnya secara lokal (walaupun mereka mungkin tidak membutuhkannya/tidak mempedulikannya) atau mengabaikan peringatan yang muncul setiap kali padanpm install
.Saya tidak akrab dengan
worker-loader
, jadi ambil komentar saya dengan sedikit garam. Tetapi jika itu seperti loaderwebpack
, mereka biasanya hanya diperlukan sebagai langkah konfigurasi build dan tidak ada yang lain. Juga, tidak masuk akal dalam konteks di mana perpustakaan dimaksudkan untuk digunakan di luar web (seperti Node).Apakah
pdf.js
bertindak sebagai semacam pluginwebpack
dalam beberapa kasus? Jika _is_, _mungkin_ masuk akal untuk menyertakan loader danwebpack
sebagai dependensi. Tetapi, meskipun demikian, saya berpendapat bahwa dukungan semacam itu harus diekstraksi ke repo/modulnya sendiri.Saya mengambil kebebasan forking repo dan mengambil semua
webpack
terkait. Ini masih berfungsi dengan baik untuk saya di aplikasi Node saya.