替换不适用于临时文件

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 目标流,您可以监听 closeerror 事件以了解它何时完成:

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()
});