var through = require('through2');
gulp.src('somefile.js')
.pipe(insert('text to prepend with'))
.pipe(gulp.dest('Destination/Path/'))
function insert(text) {
function prefixStream(prefixText) {
var stream = through();
stream.write(prefixText);
return stream;
}
let prefixText = new Buffer(text + "\n\n"); // allocate ahead of time
// creating a stream through which each file will pass
var stream = through.obj(function (file, enc, cb) {
//console.log(file.contents.toString());
if (file.isBuffer()) {
file.contents = new Buffer(prefixText.toString() + file.contents.toString());
}
if (file.isStream()) {
throw new Error('stream files are not supported for insertion, they must be buffered');
}
// make sure the file goes through the next gulp plugin
this.push(file);
// tell the stream engine that we are done with this file
cb();
});
// returning the file stream
return stream;
}
6条答案
按热度按时间j8ag8udp1#
这个解决方案不是我的,我不知道它是从哪里来的,但它有效。
inn6fuwd2#
不可能添加到文件的开头。See this question用于C中的类似问题,this question用于C#中的类似问题。
我建议您以常规方式进行日志记录(即,记录到文件末尾)。
否则,没有办法阅读文件,将文本添加到开始并将其写回文件,这可能会非常昂贵。
bjg7j2ky3#
看起来确实可以使用https://www.npmjs.com/package/prepend-file
06odsfpq4#
下面是一个如何使用gulp和一个自定义构建函数将文本前置到文件的示例。
来源:
[cole_gentry_github_dealingWithStreams][1]
wko9yo5t5#
可以使用
prepend-file
节点模块。请执行以下操作:npm i prepend-file -S
1.在各自代码中导入
prepend-file module
。示例:
p5fdfcr16#
这种方法也可以是一种替代方法: