Объединять и переименовывать файлы на основе имени каталога с помощью Gulp

1

Я пытаюсь настроить gulpfile.js на конкатенирование всех .js файлов в моей папке src/js и называть их на основе их родительской папки.

Пример структуры папок:

project
|
+-assets
| |
| +-app.min.js
| |
| +-vendor.min.js
|
+-src
| |
| +-app
| | |
| | +-file1.js
| | |
| | +-file2.js
| |
| +-vendor
| | |
| | +-file1.js
| | |
| | +-file2.js

Я могу настроить его для определенных папок и иметь конкретные имена файлов для каждого из них, но мне нужна функция, которая может работать через неопределенное изменение папок и имен.

Раньше я использовал:

gulp.task('js', function () {
    gulp.src('src/js/app/**/*.js')
        .pipe(plumber(plumberErrorHandler))
        .pipe(jshint())
        .pipe(jshint.reporter('fail'))
        .pipe(concat('app.min.js'))
        .pipe(uglify())
        .pipe(gulp.dest('assets/js'))
});
Теги:
gulp
concatenation
gulp-concat

2 ответа

1

Взгляните на этот официальный рецепт. Он должен показывать именно то, что вы хотите.

function getFolders(dir) {
    return fs.readdirSync(dir)
      .filter(function(file) {
        return fs.statSync(path.join(dir, file)).isDirectory();
      });
}

var folders = getFolders('src');

folders.map(function(folder) {      
      gulp.src(path.join('src', folder, '/**/*.js'))
        .pipe(concat(folder + '.js'))
        .pipe(gulp.dest('assets'));
   });
0

но мне нужна функция, которая может работать через неопределенное изменение папок и имен.

Я лично не знаю, как это сделать. То, что я обычно решал, решает мою проблему - установить переменную пути с именем этих папок и построить мою задачу таким образом.

var path = [ 'app', 'vendor' ];

gulp.task('js', function () {
  for (var i = 0; i < path.length; i++) {
    var p = path[i];
    gulp.src('src/' + p + '/**/*.js')
        .pipe(plumber(plumberErrorHandler))
        .pipe(jshint())
        .pipe(jshint.reporter('fail'))
        .pipe(concat(p + '.min.js'))
        .pipe(uglify())
        .pipe(gulp.dest('assets/js'))
  }
});

Я слышал, что путь глотки может сделать то, что вы хотите, но я лично не заглянул в него.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню