Gulp, es6, наследование

96
26 июня 2021, 14:30

эксперимента ради пытаюсь переписать сборщик с использованием классов. Хочу разделить Dev и Dist сборку в разные классы и наследовать общие модули и методы от главного класса.

Имеется следующий код.

class Collector {
    constructor() {
        this.gulp = require('gulp');
    }
}
class DevCollector extends Collector {
    constructor() {
        super(gulp);
    }
    buildSass() {
        return this.gulp // Почему undefined? 
            .src(this.path.dev.sass)
            .pipe(this.sass())
            .pipe(this.gulp.dest(this.path.dist.css))
            .pipe(this.server.stream());
    }
}

При попытке билда, вылазит ошибка, что GULP is no defined. В этой строке

return this.gulp

Пытаюсь получить к нему доступ через SUPER super(gulp) - не работает super(this.gulp) - не работет

Как получить доступ к этому свойству родительского класса?

Answer 1

Функции buildSass, buildJs и moveImg теряют контекст при передачи в галп таким способом:

const build = this.gulp.parallel(this.buildSass, this.buildJs, this.moveImg);

Это можно решить вот так:

const build = this.gulp.parallel(this.buildSass.bind(this), this.buildJs.bind(this), this.moveImg.bind(this));

READ ALSO
Как установить выбранный диапазон дат по умолчанию?

Как установить выбранный диапазон дат по умолчанию?

Использую эту библиотеку для выбора диапазона дат: ссылка

108
Выполнение синхронного запроса Axios

Выполнение синхронного запроса Axios

Как выполнить синхронный запрос через axios?

72
выделить другим цветом ссылку, которая перевела на определенную часть страницы

выделить другим цветом ссылку, которая перевела на определенную часть страницы

Есть страница, навигация по ней работает по ссылкам, каждая ссылка ведет на определенную часть страницы

71