Программная передача имени каталога в виде строки в gulp-rename

Можно ли передать имя родительского каталога в gulp-rename или любой другой плагин переименования? Я пытаюсь программно объединить все файлы в папках 'src' и переименовать их с именем их родительского каталога. Код ниже - это то, что я имею до сих пор.

gulp.task('js-test', function() {
    return gulp.src('dev/scripts/**/src/*.min.js')
        .pipe(concat('interim-name.js'))
        .pipe(rename('How do I give it the name of the parent directory of src'))
        .pipe(gulp.dest('dev/scripts'))
});

Конечный результат будет выглядеть так:

  • Dev
    • Сценарии
      • начальная загрузка
        • Src
          • alert.js (файл)
            • alert.js.map (файл)
            • alert.min.js (файл)
          • tooltip.js (файл)
            • tooltip.js.map (файл)
            • tooltip.min.js (файл)
        • bootstrap.js
        • bootstrap.min.js
      • Fontawesome
        • Src
          • файл-1.js
            • file-1.js.map (файл)
            • file-1.min.js (файл)
          • файл-2.js
            • file-2.js.map (файл)
            • file-2.min.js (файл)
          • файл-3.js
            • file-3.js.map (файл)
            • file-3.min.js (файл)
        • fontawesome.js
        • fontawesome.min.js

1 ответ

gulp-rename может использовать функцию, например, из документации:

// rename via function 
gulp.src("./src/**/hello.txt")
 .pipe(rename(function (path) {
     path.dirname += "/ciao";
     path.basename += "-goodbye";
     path.extname = ".md"
 }))
 .pipe(gulp.dest("./dist")); // ./dist/main/text/ciao/hello-goodbye.md 

Таким образом, я выйду из файла path.dirname, а затем поработаю над обработкой строки:

.pipe(rename(function (path) {

   // I use nodePath.sep here but you may have to require path for it to work
   // var nodePath = require('path');
   // but maybe just path.sep without the require will work just fine

   var temp = path.dirname.split(nodePath.sep);
   path.basename = temp[some index here];
}))
Другие вопросы по тегам