1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- const JavaScriptObfuscator = require("javascript-obfuscator");
- const fs = require("fs");
- // 配置
- const buildDir = "./dist/assets/";
- const getJsFileList = (dir) =>
- new Promise((resolve, reject) => {
- fs.readdir(dir, (err, files) => {
- if (err) return reject(`待混淆文件目录不存在!`);
- console.log("files:", files);
- return resolve(
- Promise.all(
- files
- .filter((fileName) => fileName.endsWith(".js"))
- .map(
- (fileName) =>
- new Promise((resolveInner) => {
- fs.readFile(dir + fileName, (err, data) => {
- console.log("err:", err);
- return resolveInner({ fileName, content: data.toString() });
- });
- })
- )
- )
- );
- });
- });
- getJsFileList(buildDir).then((list) => {
- console.log(
- `开始代码混淆...`,
- list.map((item) => item.fileName)
- );
- Promise.all(
- list.map(
- (it) =>
- new Promise((resolve) => {
- const obfuscationResult = JavaScriptObfuscator.obfuscate(it.content, {
- /** 这些都是配置 */
- // optionsPreset: "low-obfuscation",
- // disableConsoleOutput: false,
- // controlFlowFlattening: true,
- selfDefending: true,
- });
- fs.writeFile(
- buildDir + it.fileName,
- obfuscationResult.getObfuscatedCode(),
- (err) => {
- if (err) {
- return console.log(`混淆失败文件=>> ${it.fileName}`, err);
- }
- console.log(`已混淆完成文件=>> ${it.fileName}`);
- resolve(1);
- }
- );
- })
- )
- ).then(() => {
- console.log(`代码混淆完成!`);
- });
- });
|