背景
假期本想使用nodejs写一个微信小程序转qq小程序的转换工具,写完复制部分之后,发现微信转qq不需要什么操作只需要修改下APPID就行(如果有特殊的部分还是需要进行特殊处理的)。现在把复制的代码放上来,方便大家在针对文件做转换的时候 可以拿来使用。
代码
// An highlighted block
let fs = require("fs");
let path = require("path");
const { exit } = require("process");
let root = "";//源文件目录
// \\miniprogram
let outRoot = "./output";//输出目录
let transRule = {
".wxml": ".qml",
".wxss": ".qss",
".wxs": ".qs",
};
// let dir = fs.readdirSync();
function readDir(dir, outDir, name) {
let file = path.join(dir, name);
if (fs.statSync(file).isDirectory()) {
let outFile = path.join(outDir, name);
if (name) {
//创建文件夹
if (!fs.existsSync(outFile)) {
fs.mkdirSync(outFile);
// console.log(outFile);
// console.log('创建')
}
}
fs.readdirSync(file).forEach((item) => {
readDir(file, outFile, item);
});
} else {
let outFile = path.join(outDir, name);
let pathForamte = path.parse(outFile);
let ext = transRule[pathForamte.ext];
if (ext) {
pathForamte.ext = ext;
pathForamte.base = pathForamte.name + ext;
}
let newFilePath = path.format(pathForamte);
fs.writeFileSync(newFilePath, transferContent(file));
// console.log(file);
}
}
//转换文件内容
function transferContent(file) {
let fileContent = fs.readFileSync(file);
let pathForamte = path.parse(file);
if (pathForamte.ext == ".wxml") {
} else if (pathForamte.ext == ".json") {
if (pathForamte.base == "project.config.json") {
//更换APPID
let content = JSON.parse(fileContent.toString());
content.qqappid = "";
delete content.appid
return JSON.stringify(content)
}
}
return fileContent;
}
readDir(root, outRoot, "");