实际开发中,有些老的项目并非工程化的项目,如纯的jquery项目等等,如果要实现所有代码的混淆加密要如何操作呢?
- 首先
npm初始化
npm init -y
- 安装
JavaScript Obfuscator
npm install --save-dev javascript-obfuscator
- 新建index.js`
内容如下:
// index.js
const fs = require('fs');
const path = require('path');
const JavaScriptObfuscator = require('javascript-obfuscator');
// 指定要混淆的目录和文件后缀
const obfuscateDirectory = 'src';
const obfuscateFileExtensions = ['.js'];
// 混淆函数
function obfuscateFile(file) {
console.log(`Obfuscating ${file}...`);
const filePath = path.resolve(__dirname, file);
const fileContent = fs.readFileSync(filePath, 'utf8');
const obfuscationResult = JavaScriptObfuscator.obfuscate(fileContent);
fs.writeFileSync(filePath, obfuscationResult.getObfuscatedCode());
}
// 遍历目录并混淆所有 JS 文件
function obfuscateFiles(directory) {
const files = fs.readdirSync(directory);
for (const file of files) {
const filePath = path.join(directory, file);
const fileStat = fs.statSync(filePath);
if (fileStat.isDirectory()) {
obfuscateFiles(filePath);
} else if (obfuscateFileExtensions.includes(path.extname(filePath))) {
obfuscateFile(filePath);
}
}
}
// 开始混淆
obfuscateFiles(obfuscateDirectory);
- 运行
node index.js
查看结果
注意代码中的const obfuscateDirectory = 'src'
对应要混淆的文件夹,初次使用,建议复制整个文件夹,再进行操作
在实际使用中,最好输出到dist
目录,且要避开一些已经压缩过的代码,如*min.js
降低转换时间
大致原理:遍历
src
路径下的所有js
文件,内容替换成混淆后内容