Penelitian sebelumnya:
Seperti yang dikatakan wiki webpack, Anda dapat menggunakan alat analisis untuk mengoptimalkan kinerja build:
dari: https://github.com/webpack/docs/wiki/build-performance#hints-from-build-stats
Petunjuk dari statistik build
Ada alat analisis yang memvisualisasikan build Anda dan juga memberikan beberapa petunjuk bagaimana ukuran build dan performa build dapat dioptimalkan .
Anda dapat membuat file JSON yang diperlukan dengan menjalankan webpack --profile --json> stats.json
Saya menghasilkan file statistik ( tersedia di sini ) mengunggahnya ke alat analisis webpack
dan di bawah tab Petunjuk saya diberitahu untuk menggunakan prefetchPlugin:
dari: http://webpack.github.io/analyse/#hints
Rantai build modul panjang
Gunakan prefetching untuk meningkatkan performa build. Ambil dulu modul dari tengah rantai .
Saya menggali web luar dalam untuk menemukan satu-satunya dokumentasi yang tersedia di prefechPlugin adalah ini:
dari: https://webpack.js.org/plugins/prefetch-plugin/
PrefetchPlugin
new webpack.PrefetchPlugin([context], request)
Permintaan untuk modul normal, yang diselesaikan dan dibangun bahkan sebelum kebutuhan untuk itu terjadi. Ini dapat meningkatkan kinerja. Coba buat profil build terlebih dahulu untuk menentukan titik pemuatan awal yang cerdas .
Pertanyaan saya:
- Bagaimana cara menggunakan prefetchPlugin dengan benar?
- Alur kerja apa yang tepat untuk digunakan dengan alat Analisis?
- Bagaimana cara mengetahui apakah prefetchPlugin berfungsi? bagaimana saya bisa mengukurnya?
- Apa artinya mengambil modul dari tengah rantai ?
Saya akan sangat menghargai beberapa contoh
Tolong bantu saya membuat pertanyaan ini menjadi sumber yang berharga bagi pengembang berikutnya yang ingin menggunakan prefechPlugin dan alat Analisis. Terima kasih.
sumber
Uncaught SyntaxError: Unexpected token r in JSON at position 0
saat mengunggah stats.json> stats.json
tetapi menulis beberapa baris tambahan di atas yang merusak penguraiJawaban:
Ya, Dokumentasi plugin pre-fetch hampir tidak ada. Setelah memahaminya sendiri, ini cukup mudah digunakan, dan tidak ada banyak fleksibilitas untuk itu. Pada dasarnya, dibutuhkan dua argumen, konteks (opsional) dan jalur modul (relatif terhadap konteks). Konteks dalam kasus Anda akan
/absolute/path/to/your/project/node_modules/react-transform-har/
mengasumsikan bahwa tilde di tangkapan layar Anda mengacu pada resolusi node_modulenode_modules
webpack .Idealnya, modul prefetch sebenarnya tidak lebih dari tiga dependensi modul. Jadi, dalam kasus Anda
isFunction.js
adalah modul dengan build chain yang panjang dan idealnya sudah diambil sebelumnya digetNative.js
Namun, saya curiga ada sesuatu yang funky dalam konfigurasi Anda, karena dependensi build chain Anda mengacu pada dependensi modul, yang seharusnya dioptimalkan secara otomatis oleh webpack. Saya tidak yakin bagaimana Anda mendapatkannya, tetapi dalam kasus kami, kami tidak melihat peringatan apa pun tentang rantai build yang panjang di node_modules. Sebagian besar build chain kami yang panjang disebabkan oleh komponen react bersarang yang membutuhkan scss. yaitu:
Terlepas dari itu, Anda ingin menambahkan plugin baru untuk setiap peringatan, seperti:
Argumen kedua harus berupa string ke lokasi relatif modul. Semoga ini masuk akal.
sumber
app/components/module.jsx
akan'app'
dan saya pikir yang kedua harus lokasi relatif, yaitu'components/module.jsx'
new webpack.PrefetchPlugin(__dirname + "/node_modules", "handlebars/runtime.js"),
node_modules
), Anda cukup meneruskan string permintaan . Perhatikan bahwa argumen pertama, konteks , adalah opsional.Bagian tengah rantai Anda mungkin ada
react-transform-hmr/index.js
karena dimulai sekitar setengah jalan. Anda dapat mencobaPrefetchPlugin('react-transform-hmr/index')
dan menjalankan kembali profil Anda untuk melihat apakah itu membantu mempercepat total waktu Anda untuk membangun.sumber
Entry module not found: Error: Cannot resolve module 'react-transform-hmr/index' in /Users/asafkatz/Development/my-react-builerplate
react-transform-hmr
ataureact-transform-hmr/index.js
dll.