# tools **Repository Path**: change_yc/tools ## Basic Information - **Project Name**: tools - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-31 - **Last Updated**: 2026-02-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Tools - JS 工具集 一个集成了 JS 格式化、压缩、加解密、混淆功能的命令行工具集。 ## 安装依赖 ```bash npm install ``` ## 使用方式 ```bash npm run start -- [options] npx ts-node src/main.ts [options] ``` > 使用 `npm run start` 或 `npm start` 时,必须加 `--` 分隔符 --- ## 工具列表 | 命令 | 功能 | 说明 | |------|------|------| | `format-files` | 基础 JS 格式化 | 使用自定义规则格式化 | | `format-prettier` | Prettier 格式化 | 使用 Prettier 格式化 | | `minify` | JS 压缩 | 使用 Terser 压缩代码 | | `xxtea-enc` | XXTEA 加密 | 加密文件内容 | | `xxtea-dec` | XXTEA 解密 | 解密文件内容 | | `obfuscate` | JS 代码混淆 | 混淆保护 JS 代码 | --- ## 1. format-files - 基础 JS 格式化 使用自定义规则格式化 JavaScript 代码。 ### 命令 ```bash npm start -- format-files -f <文件路径> [选项] npx ts-node src/main.ts format-files -f <文件路径> [选项] ``` ### 选项 | 参数 | 说明 | 必填 | |------|------|------| | `-f, --file ` | 输入文件路径 | 是 | | `-o, --output ` | 输出文件路径 | 否 | | `-a, --advanced` | 使用高级格式化模式 | 否 | ### 示例 ```bash # 基础格式化(原地修改) npx ts-node src/main.ts format-files -f ./test.js # 输出到新文件 npx ts-node src/main.ts format-files -f ./test.js -o ./test.formatted.js # 高级格式化模式 npx ts-node src/main.ts format-files -f ./test.js -a ``` --- ## 2. format-prettier - Prettier 格式化 使用 Prettier 格式化 JavaScript 代码,支持更丰富的格式化选项。 ### 命令 ```bash npm start -- format-prettier -f <文件路径> [选项] npx ts-node src/main.ts format-prettier -f <文件路径> [选项] ``` ### 选项 | 参数 | 说明 | 必填 | |------|------|------| | `-f, --file ` | 输入文件路径 | 是 | | `-o, --output ` | 输出文件路径 | 否 | | `-b, --basic` | 使用基础格式化模式 | 否 | ### 示例 ```bash # Prettier 格式化 npx ts-node src/main.ts format-prettier -f ./test.js # 基础模式 npx ts-node src/main.ts format-prettier -f ./test.js -b ``` --- ## 3. minify - JS 压缩 使用 Terser 压缩 JavaScript 代码,减小文件体积。 ### 命令 ```bash npm start -- minify -f <文件路径> [选项] npx ts-node src/main.ts minify -f <文件路径> [选项] ``` ### 选项 | 参数 | 说明 | 必填 | |------|------|------| | `-f, --file ` | 输入文件路径 | 是 | | `-o, --output ` | 输出文件路径 | 否 | | `-a, --aggressive` | 激进压缩模式(更小体积,可能影响兼容性) | 否 | ### 示例 ```bash # 普通压缩 npx ts-node src/main.ts minify -f ./test.js # 激进压缩 npx ts-node src/main.ts minify -f ./test.js -a # 输出到指定文件 npx ts-node src/main.ts minify -f ./test.js -o ./test.min.js ``` --- ## 4. xxtea-enc / xxtea-dec - XXTEA 加解密 使用 XXTEA 算法加密/解密文件内容。 ### 加密命令 ```bash npm start -- xxtea-enc -f <文件路径> -k <密钥> [选项] npx ts-node src/main.ts xxtea-enc -f <文件路径> -k <密钥> [选项] ``` ### 解密命令 ```bash npm start -- xxtea-dec -f <文件路径> -k <密钥> [选项] npx ts-node src/main.ts xxtea-dec -f <文件路径> -k <密钥> [选项] ``` ### 选项 | 参数 | 说明 | 必填 | |------|------|------| | `-f, --file ` | 输入文件路径 | 是 | | `-k, --key ` | 加密/解密密钥 | 是 | | `-o, --output ` | 输出文件路径 | 否 | | `--no-compress` | 不压缩数据(加密时)/ 数据未压缩(解密时) | 否 | ### 示例 ```bash # 加密文件 npx ts-node src/main.ts xxtea-enc -f ./data.bin -k mySecretKey123 # 解密文件 npx ts-node src/main.ts xxtea-dec -f ./data.bin.enc -k mySecretKey123 # 加密但不压缩 npx ts-node src/main.ts xxtea-enc -f ./data.bin -k mySecretKey123 --no-compress ``` --- ## 5. obfuscate - JS 代码混淆 使用 javascript-obfuscator 混淆保护 JavaScript 代码。 ### 命令 ```bash npm start -- obfuscate -f <文件路径> [选项] npx ts-node src/main.ts obfuscate -f <文件路径> [选项] ``` ### 选项 | 参数 | 说明 | 必填 | |------|------|------| | `-f, --file ` | 输入文件路径 | 是 | | `-o, --output ` | 输出文件路径 | 否 | | `-l, --level ` | 混淆级别: `off`, `basic`, `medium`, `advanced` | 否(默认 basic) | | `-t, --target ` | 目标环境: `browser`, `node` | 否(默认 browser) | | `-c, --config ` | JSON 配置文件路径,覆盖预设级别的参数 | 否 | ### 混淆级别说明 | 级别 | 说明 | 体积影响 | 性能影响 | |------|------|----------|----------| | `off` | 关闭混淆,仅压缩 | 减小 | 无 | | `basic` | 基础混淆(变量名混淆) | 减小 | 无 | | `medium` | 中等混淆(+ 字符串混淆、死代码注入) | 增大 3~10 倍 | 低 | | `advanced` | 高级混淆(+ 控制流扁平化、自我保护) | 增大 50~250 倍 | 高 | ### 示例 ```bash # 基础混淆 npx ts-node src/main.ts obfuscate -f ./test.js # 中等混淆 npx ts-node src/main.ts obfuscate -f ./test.js -l medium # 高级混淆,针对 Node.js 环境 npx ts-node src/main.ts obfuscate -f ./test.js -l advanced -t node # 使用自定义配置覆盖 npx ts-node src/main.ts obfuscate -f ./test.js -l basic -c ./my-config.json ``` ### 自定义配置 创建 JSON 配置文件,基于预设级别覆盖部分参数: ```json { "stringArray": true, "controlFlowFlattening": true, "deadCodeInjection": false, "stringArrayEncoding": ["base64"], "stringArrayThreshold": 0.8 } ``` 然后通过 `-c` 参数传入: ```bash npx ts-node src/main.ts obfuscate -f ./test.js -l basic -c ./my-config.json ``` 详细的配置参数说明请查看 [obfuscate-config.README.md](./src/js-ob/obfuscate-config.README.md)。 --- ## 作为库使用 除了命令行,也可以作为库在代码中调用: ```typescript import { formatFiles, formatPrettier, minify, xxteaEncrypt, xxteaDecrypt, obfuscate } from "./src/main"; // 格式化 await formatFiles("./test.js", { advanced: true }); await formatPrettier("./test.js", { basic: true }); // 压缩 await minify("./test.js", { aggressive: true }); // XXTEA 加解密 await xxteaEncrypt("./data.bin", "mySecretKey", { compress: true }); await xxteaDecrypt("./data.enc", "mySecretKey"); // 代码混淆 await obfuscate("./test.js", { level: "medium", target: "browser" }); ``` ### 混淆模块单独使用 ```typescript import { obfuscateFile, ObfuscateOptions } from "./src/js-ob/js-obfuscate"; // 使用预设级别 await obfuscateFile("input.js", "output.js", { level: "medium" }); // 使用自定义配置覆盖 await obfuscateFile("input.js", "output.js", { level: "basic", target: "node", customConfig: { stringArray: true, controlFlowFlattening: true, deadCodeInjection: false } }); ``` --- ## 项目结构 ``` tools/ ├── src/ │ ├── main.ts # 入口文件 │ ├── format-prettier/ # 格式化工具 │ │ ├── format-files.ts │ │ ├── format-with-prettier.ts │ │ └── minify-files.ts │ ├── js-ob/ # 混淆工具 │ │ ├── js-obfuscate.ts │ │ ├── obfuscate-config.json # 预设配置 │ │ └── obfuscate-config.README.md # 配置说明 │ └── xxtea/ # 加解密工具 │ └── xxtea-tools.ts ├── package.json └── README.md ```