客户端打包的时候如果有不同的logo,名称等信息,每次打包都需要替换一遍 ,所以这里就写了个脚本来批量替换文件和文字。
替换文本
const path = require("path");
const fs = require("fs");
const suff_arr = [".html", ".js", ".txt", ".vue", ".json"];
function changefile(mpath, oldword, newword) {
let suff = mpath.substring(mpath.lastIndexOf("."));
if (suff_arr.indexOf(suff) !== -1) {
console.info("mpath", mpath);
fs.readFile(mpath, 'utf8', function (err, files) {
var result = files.replace(new RegExp(oldword, "g"), newword);
fs.writeFile(mpath, result, 'utf8', function (err) {
if (err) return console.log(err);
});
})
}
}
function editKeyWord(mpath, oldword, newword) {
var stat = fs.lstatSync(mpath);
if (stat.isFile()) {
changefile(mpath, oldword, newword);
} else if (stat.isDirectory()) {
fs.readdir(mpath, 'utf8', function (err, data) {
if (data) {
data.forEach(function (item, index) {
let temppath = path.join(mpath, item);
editKeyWord(temppath, oldword, newword);
});
}
});
}
}
// 指定目录
const filePath = path.resolve(__dirname + '/../src/');
editKeyWord(filePath, "郑外网校", "新枫杨网校");
// 指定文件
let html_arr = [
"package.json",
"v_blackboard.html"
];
for (const str of html_arr) {
const temppath = path.resolve(__dirname + '/../' + str);
editKeyWord(temppath, "郑外网校", "新枫杨网校");
}
替换文件
const path = require("path");
const fs = require("fs");
/*
* 复制目录、子目录,及其中的文件
* @param src {String} 要复制的目录
* @param dist {String} 复制到目标目录
*/
function copyDir(src, dist, callback) {
fs.access(dist, function (err) {
if (err) {
// 目录不存在时创建目录
fs.mkdirSync(dist);
}
_copy(null, src, dist);
});
function _copy(err, src, dist) {
if (err) {
callback(err);
} else {
fs.readdir(src, function (err, paths) {
if (err) {
callback(err)
} else {
paths.forEach(function (mpath) {
var _src = path.join(src, mpath);
var _dist = path.join(dist, mpath);
fs.stat(_src, function (err, stat) {
if (err) {
callback(err);
} else {
// 判断是文件还是目录
if (stat.isFile()) {
if (fs.existsSync(_dist)) {
fs.unlinkSync(_dist);
}
fs.writeFileSync(_dist, fs.readFileSync(_src));
} else if (stat.isDirectory()) {
// 当是目录是,递归复制
copyDir(_src, _dist, callback)
}
}
})
})
}
})
}
}
}
const path_origin = path.resolve(__dirname , './xfy/image');
const path_target = path.resolve(__dirname , '../image');
console.info("path_origin", path_origin);
console.info("path_target", path_target);
copyDir(path_origin, path_target, function (err) {
if (err) {
console.log(err);
}
})
方便执行我们写了批处理文件
test.bat
node test.js
pause