Dependensi Peer dan Tree Shaking
Deklarasikan React sebagai dependensi peer, aktifkan tree shaking tanpa efek samping, dan uji paket yang dipublikasikan.
Dependensi Peer dan Tree Shaking adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.
Apa Itu Dependensi Rekan
Dependensi rekan menyatakan paket yang diperlukan pustaka Anda, tetapi diharapkan disediakan oleh konsumen. Dalam package.json pustaka Anda, React harus berada di peerDependencies, bukan di dependencies. Saat pengguna memasang pustaka Anda, npm/yarn tidak memasang React secara otomatis—aplikasi pengguna sudah memiliki React, dan pustaka Anda berbagi instans tersebut.
Mengapa React Tidak Dimasukkan ke dependencies
Jika React berada di dependencies pustaka Anda, npm mungkin memasang salinan React kedua di samping React milik konsumen. Dua instans React dalam aplikasi yang sama merusak semua pengait dan menyebabkan kesalahan "Invalid hook call". Dengan mendeklarasikan React sebagai peerDependency, Anda memberi tahu npm, "Saya memerlukan React, tetapi gunakan yang sudah dimiliki konsumen."
peerDependenciesMeta untuk Rekan Opsional
Beberapa dependensi rekan mungkin bersifat opsional—misalnya, pustaka yang mendukung styled-components dan Modul CSS. Tandai rekan opsional menggunakan peerDependenciesMeta: { 'styled-components': { optional: true } }. npm tidak akan memperingatkan pengguna tentang rekan opsional yang tidak ada, tetapi tipe TypeScript tetap dapat disediakan saat paket opsional tersebut dipasang.
Kolom sideEffects
Kolom sideEffects dalam package.json memberi tahu pembuat bundel apakah pustaka Anda aman untuk diproses dengan penghapusan kode yang tidak digunakan. Menetapkan "sideEffects": false memberi tahu webpack, Rollup, dan peralatan serupa bahwa mengimpor modul apa pun dari pustaka Anda tidak menimbulkan efek samping—semua ekspor yang tidak digunakan dapat dihapus dengan aman dari bundel konsumen.
sideEffects dengan Impor CSS
Impor CSS adalah efek samping yang umum—impor tersebut menyisipkan gaya ke halaman sebagai efek samping dari proses impor. Jika pustaka Anda mengimpor berkas CSS, tetapkan "sideEffects": ["*.css", "*.scss"] untuk memberi tahu pembuat bundel bahwa berkas JS aman diproses dengan penghapusan kode yang tidak digunakan, tetapi berkas CSS harus selalu disertakan saat diimpor.
Penghapusan Kode Terperinci dengan Ekspor Bernama
Untuk memaksimalkan penghapusan kode yang tidak digunakan, ekspor setiap komponen sebagai ekspor bernama dari berkasnya sendiri. Dalam index.ts, ekspor ulang semuanya: export { Button } from './Button'. Saat konsumen hanya mengimpor Button, pembuat bundel dapat menghapus semua komponen lainnya. Berkas pengumpul dengan ekspor ulang memungkinkan pola ini.
Menguji Efektivitas Penghapusan Kode
Gunakan bundlejs.com untuk menguji penghapusan kode yang tidak digunakan: tempelkan pernyataan impor Anda dan situs tersebut akan melaporkan ukuran bundel sebenarnya. Paket npm size-limit memungkinkan Anda menentukan anggaran ukuran dalam package.json dan menggagalkan CI jika ukuran impor melebihi batas: "size-limit": [{ "path": "dist/index.js", "limit": "10 KB" }].
Anggaran Ukuran Publikasi
Tetapkan anggaran ukuran untuk impor pustaka Anda. Jalankan npx size-limit di CI untuk menegakkannya. Pertumbuhan dampak bundel dari waktu ke waktu menunjukkan perluasan cakupan. Pustaka komponen yang terfokus sebaiknya menjaga impor setiap komponen tetap di bawah beberapa kilobita. Beri peringatan tentang regresi sebelum regresi tersebut sampai ke konsumen.
Pustaka CSS-dalam-JS pada Pustaka Komponen
Hindari styled-components dan Emotion dalam pustaka komponen yang ingin Anda distribusikan. Solusi CSS-dalam-JS saat runtime ini mengharuskan konsumen memasang pustaka dan versi yang sama, sehingga menimbulkan konflik dependensi rekan. Jika konsumen menggunakan Tailwind atau CSS biasa, mereka tetap harus membundel runtime CSS-dalam-JS. Sebaiknya gunakan Modul CSS, yang dikompilasi menjadi CSS biasa saat proses kompilasi.
Modul CSS dalam Pustaka
Modul CSS berfungsi baik dalam pustaka jika dipadukan dengan pembuat bundel yang memprosesnya. tsup dan Rollup dapat menyertakan keluaran Modul CSS sebagai nama kelas dengan cakupan terbatas. Konsumen tidak perlu mengonfigurasi apa pun—gaya tersebut sudah memiliki cakupan terbatas dan disertakan dalam bundel JS atau sebagai berkas CSS terpisah yang diimpor.
devDependencies vs peerDependencies
Peralatan pengembangan Anda sendiri (tsup, TypeScript, pustaka pengujian, Storybook) dimasukkan ke devDependencies—peralatan tersebut hanya diperlukan selama pengembangan dan tidak disertakan dalam pemasangan npm bagi konsumen. React dimasukkan ke peerDependencies (persyaratan saat runtime) dan devDependencies (diperlukan untuk mengompilasi serta menguji pustaka Anda secara lokal).
Makna Kolom sideEffects
Apa yang disampaikan kepada pembuat bundel dengan menetapkan "sideEffects": false dalam package.json sebuah pustaka?
Rangkuman Pelajaran: Dependensi Rekan dan Penghapusan Kode
Deklarasikan React dalam peerDependencies (bukan dependencies) agar konsumen berbagi instans React dari aplikasi mereka. sideEffects: false mengaktifkan penghapusan penuh kode pustaka yang tidak digunakan. Gunakan sideEffects: ['*.css'] untuk mencegah penghapusan impor CSS. Ekspor bernama dari berkas individual memaksimalkan tingkat perincian penghapusan kode. Tegakkan anggaran ukuran dengan size-limit di CI. Pilih Modul CSS daripada CSS-dalam-JS dalam pustaka untuk menghindari konflik dependensi rekan.
Belajar React dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 88
- Pelajaran
- 324
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Dependensi Peer dan Tree Shaking” gratis?
Ya — teks lengkap “Dependensi Peer dan Tree Shaking” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Dependensi Peer dan Tree Shaking”?
Deklarasikan React sebagai dependensi peer, aktifkan tree shaking tanpa efek samping, dan uji paket yang dipublikasikan. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai React Academy?
Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Dependensi Peer dan Tree Shaking” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?
Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Membundel dengan Rollup dan tsup untuk Pustaka
- Output Paket Ganda ESM dan CJS
- Dependensi Peer dan Tree Shaking
- Mempublikasikan ke npm dan Penerapan Versi Semantik