Я использую gulp для обработки, минимизации и связывания моих css-файлов (и js тоже).Но я не хочу писать файл сразу.Я хочу проверить, не совпадает ли сумма md5 обработанного содержимого с суммой md5 существующей версии связанного файла, и писать только в этом случае.
Вместо того, чтобы сразу же написать файл, который я пытаюсь получить, является строкой изпроцесс.
Но конструкция не работает.
const Stream = require('stream');
const writableStream = new Stream.Writable({ objectMode: true });
var file = "";
writableStream._write = (chunk, encoding, next) => {
file += chunk.contents.toString();
next();
}
let bundlePipe = gulp.src([...vendorLinks.map(e => path.resolve(htmlPath + e)), ...resourceLinks.map(e => path.resolve(htmlPath + e))], { sourcemaps: true })
.pipe(postcss([cssnext, cssnano]))
.pipe(concat("style.bundle.min.css"))
.pipe(writableStream);
//.pipe(gulp.dest(path.resolve(paths["html/static/css"])));
bundlePipe.on("end", () => {
// It never goes there!
console.log("get file contents", file);
}
Кажется, что writeableStream, который я создаю, не знает, что все данные уже переданы ему, и никогда не выдает сигнал завершения.
Что я могу сделать, чтобы writeableStream закрывался после получения всех данных из канала?