我成功使用NPM中的replace模块(参见第一个示例)。但是,我想保留原始文件并处理一个新的(临时)文件,该文件是它的副本。这是我试过的:
使用:
var replace = require("replace");
replace({
regex: "foo",
replacement: "bar",
paths: [path_in],
recursive: true,
silent: true,
});
不起作用:
var replace = require("replace");
var fs = require('fs');
fs.createReadStream(path_in).pipe(fs.createWriteStream(path_temp));
replace({
regex: "foo",
replacement: "bar",
paths: [path_temp],
recursive: true,
silent: true,
});
我需要关闭pipe()
吗?不知道该怎么做..
谢谢,
修改:此GitHub issue是相关的。
答案 0 :(得分:1)
.pipe()
是异步的,因此您需要等待.pipe()
完成才能尝试使用目标文件。由于.pipe()
会返回目标流,因此您可以收听close
或error
个事件,以了解其完成时间:
var replace = require("replace");
var fs = require('fs');
fs.createReadStream(path_in).pipe(fs.createWriteStream(path_temp)).on('close', function() {
replace({
regex: "foo",
replacement: "bar",
paths: [path_temp],
recursive: true,
silent: true,
});
}).on('error', function(err) {
// error occurred with the .pipe()
});