vite-plugin-bundle-obfuscator
v1.4.0
Published
JavaScript obfuscator plugin for Vite environments
Downloads
6,727
Maintainers
Readme
vite-plugin-bundle-obfuscator
适用于Vite
环境的JavaScript
混淆器插件
Changelog · Report Bug · Request Feature
⭐️ 特性
- ✅ ⚡ 支持
Vite
项目中的JavaScript
混淆。 - ✅ 🚀 多线程支持,以获得更好的性能。
- ✅ ⚙️ 可定制的混淆器选项,以满足您的需求。
- ✅ 🛡️ 自动排除
node_modules
。 - ✅ 📦 支持
node_modules
拆分块。
⚠️ 注意
- 如果混淆选项
stringArray
为true
。- 您的结果可能会丢失一些捆绑包(在
__vite__mapDeps
数组中)。 - 我正在寻找一个准确的案例。
- 您的结果可能会丢失一些捆绑包(在
- 如果遇到内存溢出,修改打包命令为
"build": "cross-env NODE_OPTIONS=--max-old-space-size=8192 vite build"
,max-old-space-size
的值根据配置自行设置。 - 在设置
node_modules
分包时,请把准确的包名前置。例如:["vue-router", "vue"],"vue"
可以同时匹配到vue
以及vue-router
。
🌐 在线试用
✦ Vite - Vanilla ✦ Vite - Vue ✦ Vite - React ✦ Vite - PReact ✦ Vite - lit ✦ Vite - Svelte ✦ Vite - Solid ✦ Vite - Qwik ✦ ...
📦 安装
# 使用npm
npm install vite-plugin-bundle-obfuscator -D
# 使用pnpm
pnpm add vite-plugin-bundle-obfuscator -D
# 使用yarn
yarn add vite-plugin-bundle-obfuscator -D
👨💻 使用
- 使用您首选的软件包管理器安装插件。
- 在
vite.config.js
中注册插件。 - 自定义混淆器配置或使用默认选项。
示例:
import vitePluginBundleObfuscator from 'vite-plugin-bundle-obfuscator';
// 全部配置
const allObfuscatorConfig = {
excludes: [],
enable: true,
log: true,
autoExcludeNodeModules: false,
// autoExcludeNodeModules: { enable: true, manualChunks: ['vue'] }
threadPool: false,
// threadPool: { enable: true, size: 4 }
options: {
compact: true,
controlFlowFlattening: true,
controlFlowFlatteningThreshold: 1,
deadCodeInjection: false,
debugProtection: false,
debugProtectionInterval: 0,
disableConsoleOutput: false,
identifierNamesGenerator: 'hexadecimal',
log: false,
numbersToExpressions: false,
renameGlobals: false,
selfDefending: true,
simplify: true,
splitStrings: false,
stringArray: false,
stringArrayCallsTransform: false,
stringArrayCallsTransformThreshold: 0.5,
stringArrayEncoding: [],
stringArrayIndexShift: true,
stringArrayRotate: true,
stringArrayShuffle: true,
stringArrayWrappersCount: 1,
stringArrayWrappersChainedCalls: true,
stringArrayWrappersParametersMaxCount: 2,
stringArrayWrappersType: 'variable',
stringArrayThreshold: 0.75,
unicodeEscapeSequence: false,
}
};
export default {
plugins: [
vitePluginBundleObfuscator(defaultObfuscatorConfig)
]
};
// 简化配置
const minimizeObfuscatorConfig = {
autoExcludeNodeModules: true,
// autoExcludeNodeModules: { enable: true, manualChunks: ['vue'] }
threadPool: true,
// threadPool: { enable: true, size: 4 }
};
export default {
plugins: [
vitePluginBundleObfuscator(minimizeObfuscatorConfig)
]
};
// 默认配置
export default {
plugins: [
vitePluginBundleObfuscator()
]
};
🚀 性能比较
拥有 7000+ modules 和 400+ bundles 在 4C 8G 机器上:
- ThreadPool Enabled : 🟩🟩🟩⬜⬜⬜⬜⬜⬜ (大约30秒)
- ThreadPool Disabled : 🟥🟥🟥🟥🟥🟥🟥🟥🟥 (大约90秒)
🛠️ 选项
| 属性 | 描述 | 类型 | 默认值 | 版本 | |------------------------|----------------------------|-------------------------------------------------------------------------------------|-------------------------|--------------------------------------| | threadPool | 线程池的配置。 | boolean | ({ enable: true; size: number } | { enable: false }) | false | v1.2.0 | | apply | 仅将插件应用于服务或构建,或在特定条件下。 | 'serve' | 'build' | ((this: void, config: UserConfig, env: ConfigEnv) => boolean) | build | v1.1.0 | | autoExcludeNodeModules | 启用自动排除node_modules。 | boolean | ({ enable: true; manualChunks: string[] } | { enable: false }) | false | v1.0.9(原本为boolean,在v1.3.0版本中扩展到当前类型) | | log | 显示或隐藏日志输出。 | boolean | true | v1.0.4 | | enable | 启用或禁用混淆器。 | boolean | true | v1.0.1 | | excludes | 排除的bundle名。从v1.0.8开始,支持正则。 | (RegExp | string)[] | [] | v1.0.0 | | options | JavaScript混淆器的选项。 | ObfuscatorOptions | defaultObfuscatorConfig | v1.0.0 |
📄 License
MIT License Copyright (c) 2024-present, Zoffy