Как изменить файл с помощью gulp through2?
Есть файл, который открываю с помощью src и пытаюсь изменить с помощьью gulp-through2.obj. Для теста хочу изменить текст "someText" в нем на сформированную строку, но замены не происходит. Мой task выглядит так:
gulp.task(`wp`, () => {
let filepathes = new Array();
return src(project.src.html)
.pipe(through((file, enc, cb) => {
fs.readFile(file.path, "utf-8", (err, doc) => {
if (err) console.log(err);
filepathes = doc.match(/([`"'])\S+?\.(css)\1/gi);
console.log(filepathes)
let replaceExp = new RegExp(`wp_enque_style(` + filepathes[0] + "\);\r\n");
doc.replace('someText', replaceExp)
})
return cb(null, file)
}))
.pipe(rename({ extname: `.php` }))
.pipe(dest(project.build.php))
}
);
Хотя текст искомый текст в файле есть. Ошибок в консоль тоже не выбрасывает. console.log при этом работает корректно. В чем может быть проблема? Замены нет потому, что fs.readFile открывает файл только для чтения? Как тогда открыть его и на изменение?
Сам файл:
<!DOCTYPE html>
<html lang="en">
someText
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="css/style.min.css">
<title>Document</title>
</head>
<body class="wrapper">
<main class="page">
</main>
</div>
</body>
<script type="text/javascript" src="js/script.min.js"></script>
</html>
Ответы (1 шт):
Автор решения: nazarpunk
→ Ссылка
С последними обновлениями gulp-through2.obj отказался запускаться, попробуйте так:
'use strict';
const {task, src, dest} = require(`gulp`);
const fs = require(`fs`);
const rename = require(`gulp-rename`);
const transfob = require(`transfob`);
task(`wp`, () => {
let filepathes = [];
return src(project.src.html)
.pipe(rename({extname: `.php`}))
.pipe(dest(project.build.php))
.pipe(transfob((file, enc, next) => {
fs.readFile(file.path, 'utf8', (err, doc) => {
if (err) return console.log(err);
filepathes = file.contents.toString().match(/([`"'])\S+?\.(css)\1/gi);
console.log(filepathes);
const result = doc.replace('someText', `wp_enque_style(${filepathes[0]});\r\n`);
fs.writeFile(file.path, result, 'utf8', err => {
if (err) return console.log(err);
});
});
next(null, file);
}))
}
);