背景:
因项目上安全编码要求,需要对angular编译后的文件中的特殊字符进行处理。
解决方案:
1、使用shell脚本(没试过,对shell不熟悉,理论上可行);
2、使用Python;
3、使用node的fs模块实现(作为前端,必须用它)
实现代码
const FS = require('fs');
//读取文件,并且替换文件中指定的字符串
let replaceFile = function(filePath,sourceRegx,targetStr){
FS.readFile(filePath,function(err,data){
if(err){
return err;
}
let str = data.toString();
str = str.replace(sourceRegx,targetStr);
FS.writeFile(filePath, str, function (err) {
if (err) return err;
});
});
}
//遍历statics文件夹,找到main_*.js
FS.readdir('./statics',function(err,files){
if(err){
return err;
}
if(files.length !=0){
files.forEach((item)=>{
let path = './statics/'+item;
//判断文件的状态,用于区分文件名/文件夹
FS.stat(path,function(err,status){
if(err){
return err;
}
let isFile = status.isFile();//是文件
let isDir = status.isDirectory();//是文件夹
if(isFile){
if(item.match(new RegExp("^main.*$"))){
replaceFile(path,/console\.log\(\"0function0\"\)/g,"zyk");
}
}
if(isDir){
console.log("文件夹:"+item);
}
});
});
}
});