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.

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';
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.
npm install esbuild-obfuscator-plugin
yarn add esbuild-obfuscator-plugin
pnpm add esbuild-obfuscator-plugin

Bundles a JavaScript file with esbuild and obfuscates the output using control flow flattening and base64 string array encoding.

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']
  })],
});