esbuild-obfuscator-plugin
raw JSON → 0.0.5 verified Fri May 01 auth: no javascript
A plugin for esbuild that integrates JavaScript code obfuscation into the build pipeline. Version 0.0.5, actively developed with no regular release cadence. Differentiates by providing simple configuration via esbuild plugins, supporting various obfuscation options like control flow flattening and string encoding. Primarily used for protecting frontend code. Ships TypeScript types.
Common errors
error const obfuscatorPlugin = require('esbuild-obfuscator-plugin'); ↓
cause Package is ESM-only, not compatible with CommonJS require.
fix
Use dynamic import: import obfuscatorPlugin from 'esbuild-obfuscator-plugin';
error Error: The obfuscator plugin must be used with esbuild.build(), not esbuild.transform(). ↓
cause Plugin is designed for build API only.
fix
Use esbuild.build() with the plugin in the plugins array.
error TypeError: obfuscatorPlugin is not a function ↓
cause Default import used incorrectly as a named import.
fix
Ensure import is default: import obfuscatorPlugin from 'esbuild-obfuscator-plugin';
Warnings
breaking Plugin only works with esbuild's build API, not transform API. ↓
fix Use esbuild.build() instead of esbuild.transform().
gotcha Obfuscation can significantly increase bundle size and degrade runtime performance. ↓
fix Test obfuscation on realistic builds and consider performance impact.
gotcha Source maps become inaccurate after obfuscation. ↓
fix Set sourcemap: false in esbuild config if source maps are not needed.
breaking Plugin is ESM-only; CommonJS require() throws an error. ↓
fix Use import syntax or dynamic import().
deprecated Options like `seed` and `options` are deprecated in favor of top-level fields. ↓
fix Pass obfuscation options directly as shown in the quickstart.
Install
npm install esbuild-obfuscator-plugin yarn add esbuild-obfuscator-plugin pnpm add esbuild-obfuscator-plugin Imports
- default wrong
const obfuscatorPlugin = require('esbuild-obfuscator-plugin')correctimport obfuscatorPlugin from 'esbuild-obfuscator-plugin' - obfuscatorPlugin wrong
import { obfuscatorPlugin } from 'esbuild-obfuscator-plugin'correctimport obfuscatorPlugin from 'esbuild-obfuscator-plugin' - ObfuscatorOptions
import type { ObfuscatorOptions } from 'esbuild-obfuscator-plugin'
Quickstart
import obfuscatorPlugin from 'esbuild-obfuscator-plugin';
import esbuild from 'esbuild';
await esbuild.build({
entryPoints: ['src/index.js'],
bundle: true,
outfile: 'dist/bundle.js',
plugins: [obfuscatorPlugin({
controlFlowFlattening: true,
stringArrayEncoding: ['base64']
})],
});