Webpack 4 plugin for ByteHide Shield obfuscation.
npm install @bytehide/webpack4-shieldBytehide Shield is a suite of tools designed to protect and obfuscate your JavaScript project code during the build process. This version is specifically designed for Webpack 4 compatibility.
---
Bytehide Shield improves the security of your applications through advanced code obfuscation, preventing reverse engineering and making tampering attempts more difficult. This plugin is designed to integrate seamlessly with Webpack 4 projects.
---
Install the Webpack 4 plugin using npm or yarn:
``bash`
npm install @bytehide/webpack4-shield --save-devor
yarn add --dev @bytehide/webpack4-shield
Add the plugin to your Webpack 4 configuration:
`javascript
const ByteHideShieldPlugin = require('@bytehide/webpack4-shield');
module.exports = {
// ... previous configuration ...
plugins: [
new ByteHideShieldPlugin({
projectToken: 'your_project_token_here', // Replace with your Bytehide project token
replace: false, // Whether to replace original files
obfuscatedExtension: '.obf', // Extension for obfuscated files
exclude: [], // Array of files to exclude from obfuscation
config: {
controlFlowFlattening: true,
debugProtection: false,
devtoolsBlocking: false,
},
include: ['.js', '.mjs', '.cjs', '.jsx'], // File extensions to process
}),
],
};
`
This version has been specifically adapted for Webpack 4 compatibility:
#### API Changes
- Plugin Registration: Uses compiler.plugin('emit', ...) instead of compiler.hooks.emit.tapAsync()
- Asset Creation: Uses function-based asset objects compatible with Webpack 4
- Promise Handling: Adapted async handling for Webpack 4's callback-based system
#### Webpack 4 Specific Features
- Compatible with Webpack 4.0.0 and above
- Uses legacy plugin API for maximum compatibility
- Optimized for Webpack 4's asset processing system
- Node.js: >= 8.0.0
- Webpack: ^4.0.0
- Webpack CLI: ^3.3.12
- Webpack Dev Server: ^3.11.3
- Advanced Obfuscation: Implements obfuscation techniques to protect your code.
- Custom Control: Configure options like controlFlowFlattening, debugProtection, and devtoolsBlocking..js
- Compatibility: Processes , .mjs, .cjs, and .jsx files.
- Webpack 4 Optimized: Fully compatible with Webpack 4's plugin system.
If you have an index.js file with this content:
`javascript`
console.log("Hello, world!");
The processed result will include a unique marker and the obfuscated code:
`javascript`
// _0xBHSHLD_
console.log(_0x123456("Hello, world!"));
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| projectToken | string | '' | Your Bytehide project token |replace
| | boolean | false | Whether to replace original files |obfuscatedExtension
| | string | '.obf' | Extension for obfuscated files |exclude
| | array | [] | Files to exclude from obfuscation |include
| | array | ['.js', '.mjs', '.cjs', '.jsx'] | File extensions to process |config.controlFlowFlattening
| | boolean | true | Enable control flow flattening |config.debugProtection
| | boolean | false | Enable debug protection |config.devtoolsBlocking
| | boolean | false | Enable devtools blocking |
- Network Error: Ensure you have an active internet connection as the plugin uses a remote service for code obfuscation.
- Invalid Token: Verify that the project token is valid.
- Webpack Version: Ensure you're using Webpack 4.x. For Webpack 5+, use @bytehide/webpack-shield instead.
If you're downgrading from Webpack 5 or need Webpack 4 compatibility:
1. Install this package: npm install @bytehide/webpack4-shield
2. Update your webpack config to require this package instead
3. No configuration changes needed - all options remain the same
| Feature | Webpack 4 | Webpack 5 |
|---------|-----------|-----------|
| Plugin API | compiler.plugin() | compiler.hooks.emit.tapAsync() |@bytehide/webpack4-shield
| Asset Objects | Function-based | Arrow function syntax |
| Node.js Support | >= 8.0.0 | >= 10.13.0 |
| Package Name | | @bytehide/webpack-shield |
---
Have ideas or suggestions? We'd love to hear from you! Open an issue or submit a pull request on the GitHub repository.
---
Bytehide Shield is available under the MIT License. Feel free to use it for personal and commercial projects.
---
Happy coding but keep it safe with @bytehide/webpack4-shield! 🛡️
Note: This is the Webpack 4 compatible version. For Webpack 5+, use @bytehide/webpack-shield`.