Skip to content

ghostdevv/rollup-obfuscator

Repository files navigation

Rollup Obfuscator

A rollup/vite plugin to obfuscate your code based on javascript-obfuscator

Requirements

  • Rollup: v2, v3, or v4
  • Node: v16+
  • javascript-obfuscator: v4

Installing

First install the plugin as a dev dependency:

npm install rollup-obfuscator -D

Next we should add it to the end of the plugins array:

Rollup:

import { obfuscator } from 'rollup-obfuscator';

export default {
    plugins: [
        // ...
        obfuscator()
    ]
}

Vite:

Note

This will only apply at build time

import { obfuscator } from 'rollup-obfuscator';
import { defineConfig } from 'vite';

export default defineConfig({
    plugins: [
        // ...
        obfuscator()
    ]
})

Configuring

The plugin should hopefully work out of the box. However, it's likely to break on larger applications - especially those that use complex frameworks. You should play with the options to find what works best for your application.

plugins: [
    obfuscator({
        // options go here
    })
]

Obfuscator Options

All config options can be found here. The plugin has the same default options, except setting sourceMap: true and stringArray: false.

Plugin Specific Options

  • include - A FilterPattern of files to include. Defaults to ['**/*.js', '**/*.ts']

  • exclude - A FilterPattern of files to exclude. Defaults to ['node_modules/**']

Migrate to v4

v4 of this plugin now requires a minimum Node version of v16, it may still work on older versions but it isn't tested. options.global was removed and is now follows v3's global: false behaviour, some issues came up that made it no longer make sense. Finally a few obfuscator option defaults were changed to: stringArray: false, sourceMap: true. If you're project doesn't work with v4 please let me know why by creating an issue. You can see the full code changes here.

Support