Moment.js menyertakan banyak locale secara default, dan itu bisa membuat bundle lebih besar dari yang perlu. Kalau aplikasimu cuma butuh satu atau dua locale, sertakan hanya itu.
Ini cara cepat memangkas ukuran tanpa mengubah logic aplikasi.
Kenapa filter locale penting
Tanpa filter, Webpack bisa membundel sebagian besar atau semua locale Moment. Itu menambah KB ekstra yang diunduh user walau tidak dipakai.
Kalau kamu hanya mendukung, misalnya, en dan id, load dua itu saja.
Contoh config Webpack
Pakai ContextReplacementPlugin:
const webpack = require('webpack');
module.exports = {
// ...your existing config
plugins: [
new webpack.ContextReplacementPlugin(/moment[\/]locale$/, /en|id/),
],
};
Config ini menyuruh Webpack hanya menyimpan locale en dan id.
Cek hasilnya
Build project lalu bandingkan ukuran bundle sebelum dan sesudah.
Yang berguna dicek:
- analisis output build di bundle analyzer
- format tanggal masih jalan di locale yang didukung
- locale yang tidak didukung memang tidak ter-load
Contoh pemakaian di runtime
import moment from 'moment';
import 'moment/locale/id';
moment.locale('id');
console.log(moment().format('LL'));
Kalau cuma butuh satu locale, perketat regex di config untuk hasil terbaik.