Автоматическое подключение плагинов gulp с помощью gulp-load-plugins
Инструменты

Автоматическое подключение плагинов gulp с помощью gulp-load-plugins

В одной из предыдущих статей мы рассматривали основы использования сборщика gulp. Во всех примерах в этой статье мы подключали каждый плагин отдельно, и файл gulpfile.js выглядел примерно так:


var gulp = require('gulp'),
    uglify = require('gulp-uglify');

gulp.task('minify', function () {
    gulp.src('js/app.js')
        .pipe(uglify())
        .pipe(gulp.dest('build'));
});

Это удобно, когда плагинов не очень много (как в примере выше). Но когда их количество растет, блок инициализации сильно разрастается. Второй момент заключается в том, что при добавлении нового плагина вам нужно явно подключить его в gulpfile.js. Это тоже может быть не всегда удобно.

К счастью, для gulp есть плагин, который загружает другие плагины — gulp-load-plugins . Давайте рассмотрим, как можно использовать его для упрощения файла gulpfile.js:


var gulp = require('gulp'),
    gulpLoadPlugins = require('gulp-load-plugins'),
    plugins = gulpLoadPlugins();

В строчках выше мы подключили gulp, gulp-load-plugins и вызвали функцию gulpLoadPlugins(). Эта функция возвращает объект со всеми плагинами. Т.е. любой плагин будет доступен как свойство объекта plugins:


gulp.task('js', function () {
   return gulp.src('js/*.js')
      .pipe(plugins.jshint())
      .pipe(plugins.jshint.reporter('default'))
      .pipe(plugins.uglify())
      .pipe(plugins.concat('app.js'))
      .pipe(gulp.dest('build'));
});

Названием свойства будет camel case от названия плагина, т.е modify-css-urls преобразуется в modifyCssUrls.

Обратите внимание, что gulp-load-plugins избавляет от необходимости явно подключать плагин в gulpfile.js, но не от необходимости устанавливать npm-модуль. Т.е. все плагины, которые мы используем в сборке, должны быть установлены.

Также стоит отметить, что gulp-load-plugins загружает плагины «лениво», т.е. плагин загружается только перед использованием. Во-первых, это увеличивает производительность сборки, а во-вторых, вам не нужно беспокоиться о неиспользуемых плагинах в package.json (хотя я предпочитаю сразу удалять плагин, если он больше не нужен).

Рассылка
Подпишитесь на рассылку и получайте дайджест новостей и статей.
Никакого спама!
Подписаться