Home

Awesome

grunt-javascript-obfuscator

Build Status

Obfuscates JavaScript files using amazing javascript-obfuscator.

Conceal your logic and hide any data contained in the code. Please read documentation how to protect your code effectively. Basic protection:

Original code:

(function(){
    var variable = 'abc';
    console.log(variable);
})();

Protected code:

var _0xabf1 = [
    '\x61\x62\x63',
    '\x6c\x6f\x67'
];
(function() {
    var _0xe6fab6 = _0xabf1[0x0];
    console[_0xabf1[0x1]](_0xe6fab6);
}());

Special thanks for @sanex3339 for his outstanding javascript-obfuscator library.

Getting Started

This plugin requires Grunt >=0.4.5

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin and javascript-obfuscator with this command:

npm install grunt-javascript-obfuscator javascript-obfuscator --save-dev

...javascript-obfuscator is defined as a peer dependency. In other words you can experiment with every version above 0.7.2.

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-javascript-obfuscator');

The "javascript_obfuscator" task

Overview

In your project's Gruntfile, add a section named javascript_obfuscator to the data object passed into grunt.initConfig().

grunt.initConfig({
  javascript_obfuscator: {
    options: {
      // Task-specific options go here.
    },
    your_target: {
      // Target-specific file lists and/or options go here.
    },
  },
});

Options

Options are passed directly to javascript-obfuscator. Please visit documentation of the project for a complete list of options.

Usage Examples

Default Options

In this example, the default options are used to obfuscate scripts:

grunt.initConfig({
  javascript_obfuscator: {
    options: {
      /* Default options */
    },
    main: {
      files: {
        'dist/obfuscated.js': ['src/module1.js', 'src/module2.js']
      }
    }
  },
});

Custom Options

In this example, custom options are used to obfuscate scripts. debugProtection makes it almost impossible to use the console tab of the Developer Tools:

grunt.initConfig({
  javascript_obfuscator: {
    options: {
      debugProtection: true,
      debugProtectionInterval: true
    },
    main: {
      files: {
        'dist/obfuscated.js': ['src/module1.js', 'src/module2.js']
      }
    }
  },
});

Obfuscate and overwrite

In this example, source files are obfuscated and overwritten:

grunt.initConfig({
  javascript_obfuscator: {
    options: {
      /* Default options */
    },
    main: {
      src: ['src/module1.js', 'src/module2.js']
    }
  },
});

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.

Release History