Penanganan Vite terhadap kondisi bersarang dalam ekspor bersyarat mirip dengan bundler modern lainnya seperti rollup dan webpack, tetapi dengan beberapa perbedaan utama:
pesanan bersarang dan spesifisitas
- Vite: Kondisi dapat bersarang di bidang `ekspor` dari` package.json`. Mereka harus ditentukan dari yang paling spesifik hingga paling tidak spesifik. Vite akan cocok dengan kondisi pertama yang ada dalam daftar kondisi yang diizinkan [1].
- Rollup: Rollup mendukung kondisi bersarang di bidang `Ekspor`, mengikuti urutan spesifisitas yang sama seperti Vite [2].
- Webpack: Webpack juga mendukung kondisi bersarang di bidang `Ekspor`, membutuhkan urutan spesifisitas yang sama seperti vite dan rollup [3].
Kondisi yang diizinkan
- Vite: Memiliki daftar kondisi yang diizinkan yang telah ditentukan yang mencakup `impor`,` module`, `browser`,` default`, dan kondisi spesifik lingkungan seperti `produksi` atau` pengembangan`. Opsi `resolve.conditions` config dapat menambahkan lebih banyak [1].
- Rollup: Memungkinkan penentu kondisi khusus melalui opsi `preservemodules` dan` preservemodulesroot` [2].
- Webpack: Memungkinkan mendefinisikan kondisi kustom melalui opsi `resolve.conditionnames` [3].
menangani kondisi yang salah
- Vite: Jika kondisinya tidak terstruktur dengan benar atau vite memilih ekspor yang salah, itu dapat menyebabkan kesalahan runtime. Penataan yang cermat dari bidang `Ekspor` sangat penting [1].
- Rollup: Rollup akan mencatat peringatan jika mengalami masalah dengan bidang `Ekspor`, tetapi mungkin masih menyelesaikan titik masuk [2].
- Webpack: Webpack akan mencatat kesalahan jika bidang `Ekspor` dilecehkan atau jika tidak dapat menyelesaikan titik masuk [3].
Dukungan Monorepo
- Vite: Secara otomatis mendeteksi dependensi terkait dalam monorepo dan memperlakukan mereka sebagai kode sumber, menganalisis dependensi mereka alih -alih menggabungkannya [4].
- ROLLUP: Membutuhkan Plugin seperti `@rollup/plugin-alias` untuk menangani dependensi tertaut dalam monorepo [2].
- Webpack: Membutuhkan menggunakan plugin seperti `Enhanced-resolve` untuk menangani dependensi tertaut dalam monorepo [3].
Singkatnya, penanganan Vite terhadap kondisi bersarang mirip dengan bundler lainnya, tetapi memiliki beberapa keunggulan seperti dukungan monorepo otomatis dan daftar kondisi yang lebih kuat yang diizinkan. Namun, semua bundler membutuhkan penataan yang cermat dari bidang `ekspor` untuk menghindari masalah.
Kutipan:[1] https://v2.vitejs.dev/config/
[2] https://vitejs.dev/guide/features
[3] https://vitejs.dev/guide/dep-pre-bundling
[4] https://vitejs.dev/guide/build
[5] https://vitejs.dev/config/shared-options