如果你想在 ThinkPHP6 项目中针对特定的某个 JS 文件(例如存放解密逻辑的 decrypt.js)进行混淆,而不是混淆整个项目的代码,可以参考以下三种方式:

1. 命令行方式(最简单直接)

如果你不想配置复杂的构建环境,直接使用全局命令行工具即可。

  1. 安装工具

    bash

    npm install -g javascript-obfuscator
    

    请谨慎使用此类代码。

  2. 执行混淆

    bash

    # 基础混淆
    javascript-obfuscator ./public/static/js/decrypt.js --output ./public/static/js/decrypt.min.js
    
    # 高强度混淆(带加密字符串和防调试)
    javascript-obfuscator ./public/static/js/decrypt.js --output ./public/static/js/decrypt.min.js --string-array true --string-array-encoding 'base64' --debug-protection true --self-defending true
    

    请谨慎使用此类代码。

    [1]

2. 使用 Node.js 脚本批量处理(推荐)

如果你有多个指定文件,或者想在发布前自动化处理,可以写一个简单的 obfuscate.js 脚本放到项目根目录。

javascript

// obfuscate.js
const JavaScriptObfuscator = require('javascript-obfuscator');
const fs = require('fs');

// 1. 指定要处理的文件路径
const targetFiles = [
    './public/static/js/decrypt.js',
    './public/static/js/api_config.js'
];

targetFiles.forEach(file => {
    const code = fs.readFileSync(file, 'utf8');
    
    // 2. 执行混淆
    const obfuscatedCode = JavaScriptObfuscator.obfuscate(code, {
        compact: true,
        controlFlowFlattening: true,
        stringArray: true,
        stringArrayEncoding: ['base64'],
        identifierNamesGenerator: 'hexadecimal'
    }).getObfuscatedCode();

    // 3. 覆盖原文件或另存为
    fs.writeFileSync(file.replace('.js', '.min.js'), obfuscatedCode);
    console.log(`${file} 混淆完成!`);
});

请谨慎使用此类代码。

运行: node obfuscate.js