替换不适用于临时文件
replace does not work on temporary file
我成功地使用了来自 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 是相关的。
.pipe()
是异步的,因此您需要等待 .pipe()
完成才能尝试使用目标文件。由于 .pipe()
returns 目标流,您可以监听 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()
});
我成功地使用了来自 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 是相关的。
.pipe()
是异步的,因此您需要等待 .pipe()
完成才能尝试使用目标文件。由于 .pipe()
returns 目标流,您可以监听 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()
});