代码逻辑
创建两个文件
读入final_file并将其内容放入finaldata
将finaldata进行处理,将其引入的src_file文件抽出
读入src_file,并将其值赋给finaldata
再将finaldata写入final_file
var fs = require('fs');
var finalData;
var arrayFile =[];
var arrayStr=[];
fs.writeFile('src_file.js', 'fsdfsdfwsffffffffffffffffffffffffffffff', function(err, fd) {
console.log('create newe new_file');
});
fs.writeFile('final_file.js', '__inline("src_file.js")', function(err, fd) {
console.log('create newe new_file');
});
fs.readFile('final_file.js', 'utf8', function(err, data) {
var finalData = data;
arrayFile = findInlineArray(data);
for(var i in arrayFile){
fs.readFile(arrayFile[i],"utf8",function(err, fd) {
finalData = fd;
fs.writeFile('final_file.js', finalData, function(err, fd) {
console.log('success');
});
});
}
function findInlineArray(data) {
var arrayFile = [];
var patt = /(__inline\(['"]).*(?=['"]\))/;
//但是这样的写法只能匹配出现一个inline的情况,
//需要改进
var result = patt.exec(data)[0].replace(patt.exec(data)[1],'');
var tempReadFile;
arrayFile.push(result);
return arrayFile;
}
});
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
不介意用同步的话可以这样。
不喜欢同步的话,可以这样
es7 async/await
最近刚好在学习nodeJS stream,所以借用楼上同学 @泡泡 的replace正则,用stream方式写了一个答案:
或者自己实现一个transform的stream,这样自己就可以在stream中随意定制了。
补充,这显然不是一个最佳方法,最好是可以在_transform方法中分段替换后,进行push,但是牵扯到被替换的关键字有可能被分为两段,这是一个难点,正在想办法,当然你可以使用上面的replacestream去处理。 stream方式在处理大文件时,优势是很明显的。