javascript-obfuscator plugin for Webpack
npm install webpack-obfuscator2npm install --save-dev webpack-obfuscator
javascript
var WebpackObfuscator = require('webpack-obfuscator');
// ...
// webpack plugins array
plugins: [
new WebpackObfuscator ({
rotateStringArray: true
}, ['excluded_bundle_name.js'])
]
`
$3
Define a rule in your webpack config and use the obfuscator-loader as the last of your loaders for your modules. You can add the enforce: 'post' flag to ensure the loader will be called after normal loaders:
`javascript
var WebpackObfuscator = require('webpack-obfuscator');
// webpack loader rules array
rules: [
{
test: /\.js$/,
exclude: [
path.resolve(__dirname, 'excluded_file_name.js')
],
enforce: 'post',
use: {
loader: WebpackObfuscator.loader,
options: {
rotateStringArray: true
}
}
}
]
`
$3
Type: Object Default: null
Options for javascript-obfuscator. Should be passed exactly like described on their page.
Warning: right now plugin does not support sourceMap and sourceMapMode options!
$3
Type: Array or String Default: []
Bundle name is output file name after webpack compilation. With multiple webpack entries you can set bundle name in output object with aliases [name] or [id].
Syntax for excludes array is syntax for multimatch package. You can see examples on package page.
Few syntax examples: ['excluded_bundle_name.js', '**_bundle_name.js'] or 'excluded_bundle_name.js'
Example:
`
// webpack.config.js
'use strict';
const JavaScriptObfuscator = require('webpack-obfuscator');
module.exports = {
entry: {
'abc': './test/input/index.js',
'cde': './test/input/index1.js'
},
output: {
path: 'dist',
filename: '[name].js' // output: abc.js, cde.js
},
plugins: [
new JavaScriptObfuscator({
rotateStringArray: true
}, ['abc.js'])
]
};
``