Как правильно настроить задачу Gulp с несколькими точками входа и обработать их по-разному?

Как правильно реализовать функционал, чтобы модуль pug обрабатывал две функции и работал корректно?

У меня есть две функции - pugPage() и pugModul(). В данный момент модуль pug отрабатывает только один раз, и я не могу просто передать src как массив, так как я хочу разные пути вывода - .pipe(dest('build')) и .pipe(dest('build/module')).

Как мне настроить модуль pug, чтобы он корректно выполнил обе функции?

```javascript
function pugPage() {
    return src('src/pug/*.pug')
    .pipe(pugGulp())
    .pipe(dest('build'))
    .pipe(bs.stream())
}

function pugModul() {
    return src('src/pug/module/index/*.pug')
    .pipe(pugGulp())
    .pipe(dest('build/module'))
    .pipe(bs.stream())
}

module.exports = function pug() {
     pugModul()
     pugPage()
}
```
  • 14 сентября 2023 г. 6:57
Ответы на вопрос 1
Для решения данной задачи вам понадобится использовать метод `merge()` из модуля `merge-stream`. Этот метод позволяет объединить несколько потоков в один, чтобы их можно было обрабатывать последовательно.

Вот как можно использовать `merge()` в вашей задаче Gulp:

```javascript
const merge = require('merge-stream');

function pugPage() {
  return src('src/pug/*.pug')
    .pipe(pugGulp())
    .pipe(dest('build'))
    .pipe(bs.stream())
}

function pugModul() {
  return src('src/pug/module/index/*.pug')
    .pipe(pugGulp())
    .pipe(dest('build/module'))
    .pipe(bs.stream())
}

module.exports = function pug() {
  return merge(pugModul(), pugPage());
};
```

В этом примере мы использовали метод `merge()` для объединения результатов работы функций `pugModul()` и `pugPage()`. Теперь эти функции будут выполнены параллельно, а результаты их работы будут обработаны последовательно. В итоге файлы с путем вывода `build/module` будут обработаны первыми, а затем файлы с путем вывода `build`.

Обратите внимание, что вам понадобится установить модуль `merge-stream` с помощью команды `npm install merge-stream`.
Похожие вопросы