Inline enum values to optimize bundle size.
- ๐ Inline enum values to reduce the size of the bundle.
- ๐งน Simplify generated enums in JavaScript.
export enum TestEnum { a = 1, b = 'foo', } console.log(TestEnum.a, TestEnum.b) // before export let TestEnum ;(function (TestEnum) { TestEnum[(TestEnum.a = 1)] = 'a' TestEnum.b = 'foo' })(TestEnum || (TestEnum = {})) console.log(TestEnum.a, TestEnum.b) // after const TestEnum = { a: 1, '1': 'a', b: 'foo', } console.log(1, 'foo')
# npm npm i -D unplugin-inline-enum # jsr npx jsr add -D @unplugin/inline-enum
Vite
// vite.config.ts import InlineEnum from 'unplugin-inline-enum/vite' export default defineConfig({ plugins: [InlineEnum()], })
Rollup
// rollup.config.js import InlineEnum from 'unplugin-inline-enum/rollup' export default { plugins: [InlineEnum()], }
Rolldown
// rolldown.config.js import InlineEnum from 'unplugin-inline-enum/rolldown' export default { plugins: [InlineEnum()], }
esbuild
// esbuild.config.js import { build } from 'esbuild' build({ plugins: [require('unplugin-inline-enum/esbuild')()], })
Webpack
// webpack.config.js module.exports = { /* ... */ plugins: [require('unplugin-inline-enum/webpack')()], }
Refer to docs.
Thanks to @xiaoxiangmoe and @yangmingshan for their contributions in the PR.
MIT License ยฉ 2024-PRESENT Kevin Deng