From 5729e88687b16ccfef80582acb03c5cee6dcbb40 Mon Sep 17 00:00:00 2001 From: sugarBecomer Date: Fri, 27 Mar 2026 16:37:14 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E6=B7=B7=E6=B7=86=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E6=89=93=E5=8C=85=E5=90=8E=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + vite.config.ts | 43 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 1e09c42..378c831 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "tw-animate-css": "^1.4.0", "typescript": "~5.9.3", "vite": "^8.0.1", + "vite-plugin-bundle-obfuscator": "^1.11.0", "vue-tsc": "^3.2.5" } } diff --git a/vite.config.ts b/vite.config.ts index fd5a70c..244faae 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -2,9 +2,50 @@ import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import tailwindcss from '@tailwindcss/vite' import { fileURLToPath, URL } from 'node:url' +import vitePluginBundleObfuscator from 'vite-plugin-bundle-obfuscator' export default defineConfig({ - plugins: [vue(), tailwindcss()], + plugins: [ + vue(), + tailwindcss(), + vitePluginBundleObfuscator({ + apply: 'build', + log: true, + autoExcludeNodeModules: true, + threadPool: true, + options: { + compact: true, + controlFlowFlattening: true, + controlFlowFlatteningThreshold: 1, + deadCodeInjection: false, + debugProtection: false, + debugProtectionInterval: 0, + disableConsoleOutput: true, + identifierNamesGenerator: 'hexadecimal', + ignoreImports: true, + numbersToExpressions: true, + renameGlobals: false, + selfDefending: true, + simplify: true, + splitStrings: true, + splitStringsChunkLength: 5, + stringArray: true, + stringArrayCallsTransform: true, + stringArrayCallsTransformThreshold: 1, + stringArrayEncoding: ['base64'], + stringArrayIndexShift: true, + stringArrayRotate: true, + stringArrayShuffle: true, + stringArrayWrappersChainedCalls: true, + stringArrayWrappersCount: 3, + stringArrayWrappersParametersMaxCount: 4, + stringArrayWrappersType: 'function', + stringArrayThreshold: 1, + transformObjectKeys: true, + unicodeEscapeSequence: false, + }, + }), + ], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url))