Как правильно сохранить информацию из pipe в переменную и использовать эту переменную в потоке в дальнейшем?

Я использую gulp для верстки, и хочу сделать так, чтобы готовую верстку можно было конвертировать из html в php для wordpress. Я застрял на том, что мне нужно заменить все <link> и <script> на wp_enque_styles и wp_enque_scripts. Я смог получить пути к файлам с помощью модуля gulp-find , но проблема в том, что у меня не получается вытащить все из pipe и сохранить в переменную. Я попробовал вывети информацию хотя бы в консоль, но это также не сработало. Вот мой код:

let gulp = require("gulp"),
     es = require("event-stream"),
     fs = require("fs"),
     find = require("gulp-find"),
     rename = require("gulp-rename");

const action = es => es.map((file, cb) => {
    console.log(file.path);
    return cb();
});

gulp.task("wp", () => {

    return src(project.src.html) // открыли файл
        .pipe(find(/([`"'])\S+?\.(css|js)\1/gi)) // нашли все пути
        .pipe(action(es)) // вызвали вывод путей в консоль
        .pipe(rename({ extname: ".php" }))
        .pipe(dest(project.build.php))
})

В консоль выводится информация о завершении task, но не выводится, найденная в файле информация:

введите сюда описание изображения

Что я делаю не так? Как корректно обработать информацию с помощью pipe и вывести ее в консоль? А затем, сохранить в переменную для последующей работы?


Ответы (1 шт):

Автор решения: nazarpunk
const {task, src, dest} = require(`gulp`);
const through = require(`through2`);
const fs = require(`fs`);

task(`wp`, () => src(project.src.html)
         .pipe(through.obj((file, enc, cb) => {
             console.log(file.path);
             fs.readFile(file.path, `utf8`, (err, doc) => {
                 const find = doc.match(/([`"'])\S+?\.(css|js)\1/gi);
                 console.log(find);
             });
             return cb(null, file);
         }))
     .pipe(rename({extname: `.php`}))
     .pipe(dest(project.build.php))
);
→ Ссылка