js代码压缩:
npm install terser -g
执行代码:
const fs = require(‘fs’);
const path = require(‘path’);
const Terser = require(‘terser’);
// 源文件夹路径,包含要压缩的 JS 文件
const sourceDir = ‘./’;
// 目标文件夹路径,用于存放压缩后的 JS 文件
const targetDir = ‘./jsm/’;
// 确保目标文件夹存在
if (!fs.existsSync(targetDir)) {
fs.mkdirSync(targetDir, { recursive: true });
}
// 遍历源文件夹下的所有文件
fs.readdirSync(sourceDir).forEach(file => {
const filePath = path.join(sourceDir, file);
const stats = fs.statSync(filePath);
// 只处理文件,忽略子文件夹
if (stats.isFile()) {
const extname = path.extname(file);
// 只处理 .js 文件
if (extname === ‘.js’) {
const targetFilePath = path.join(targetDir, file);
// 读取文件内容
const fileContent = fs.readFileSync(filePath, 'utf8');
// 使用 Terser 压缩文件内容
(async () => {
const minified = await Terser.minify(fileContent);
const minifiedContent = minified.code;
// 将压缩后的内容写入目标文件
fs.writeFileSync(targetFilePath, minifiedContent);
console.log(`Compressed ${filePath} to ${targetFilePath}`);
})();
}
}
});
js代码混淆:
npm install javascript-obfuscator --save-dev
执行代码:
const fs = require(‘fs’);
const path = require(‘path’);
const JavaScriptObfuscator = require(‘javascript-obfuscator’);
// 指定要混淆的文件夹路径
const folderPath = ‘./path/to/your/js/files’;
// 遍历文件夹中的所有文件
function traverseDirectory(dirPath) {
const files = fs.readdirSync(dirPath);
files.forEach(file => {
const filePath = path.join(dirPath, file);
const stats = fs.statSync(filePath);
if (stats.isDirectory()) {
// 如果是目录,递归遍历
traverseDirectory(filePath);
} else if (path.extname(file) === '.js') {
// 如果是 .js 文件,则混淆它
obfuscateFile(filePath);
}
});
}
// 混淆单个文件
function obfuscateFile(filePath) {
fs.readFile(filePath, ‘utf8’, (err, data) => {
if (err) {
console.error(Error reading file ${filePath}:
, err);
return;
}
const obfuscatedCode = JavaScriptObfuscator.obfuscate(data, {
compact: true,
controlFlowFlattening: true,
controlFlowFlatteningThreshold: 0.75,
numbersToExpressions: true,
simplify: true,
shuffleStringArray: true,
splitStrings: true,
stringArrayThreshold: 0.75,
unicodeEscapeSequence: true,
}).getObfuscatedCode();
fs.writeFile(filePath, obfuscatedCode, 'utf8', err => {
if (err) {
console.error(`Error writing file ${filePath}:`, err);
} else {
console.log(`File ${filePath} obfuscated successfully.`);
}
});
});
}
// 开始遍历文件夹
traverseDirectory(folderPath);