ICU message format compiler with a <1KB runtime bundle footprint
npm install icu-minifyicu-minifyICU message format compiler with a 650 bytes runtime ✨
1. Build-time compilation ⚡
Converts ICU messages to a compact JSON intermediate representation
2. Minimal runtime 📦
650 bytes (minified + compressed) with zero runtime dependencies
3. Full ICU support 🌍
{arguments}, plural, select, selectordinal, date, time, number and
``ts
import compile from 'icu-minify/compile';
import format from 'icu-minify/format';
// At build time
const compiled = compile('Hello {name}!');
// ["Hello ", ["name"], "!"]
console.log(compiled);
// At runtime
format(compiled, 'en', {name: 'World'});
`
This library is heavily inspired by icu-to-json and @lingui/message-utils`, which similarly use an array-based intermediate representation for compiled messages.
For detailed design rationale, motivation, tradeoffs, and implementation details, see RFC: Ahead-of-time compilation of ICU messages.