У меня есть следующая структура в моем source
каталоге:Условно создание каталогов из имен файлов в задаче Глотка
|-source
|-home.pug
|-page1.pug
|-page2.pug
Я ожидаю, чтобы получить это в моем dest
каталоге:
|-dest
|-index.html (former home.pug)
|-page1/index.html (former page1.pug)
|-page2/index.html (former page2.pug)
Моего Gulpfile.js выглядит например:
var
gulp = require('gulp'),
gulpif = require('gulp-if'),
gzip = require('gulp-gzip'),
htmlmin = require('gulp-htmlmin'),
path = require('path'),
pug = require('gulp-pug'),
rename = require('gulp-rename');
gulp.task('views', function() {
gulp.src('source/!(home)*.pug')
.pipe(pug())
.pipe(rename(function(file) {
file.dirname = path.join(file.dirname, file.basename);
file.basename = 'index';
file.extname = '.html';
}))
.pipe(htmlmin())
.pipe(gulp.dest('dest/'))
gulp.src('source/home.pug')
.pipe(pug())
.pipe(rename(function(file) {
file.basename = 'index';
file.extname = '.html';
}))
.pipe(htmlmin())
.pipe(gulp.dest('dest/'))
});
Как вы можете видеть, существуют два блока с использованием того же кода сверху и снизу. Я бы хотел найти более оптимальное решение.
Я добавил gulp-if
и пытался реализовать, если-иначе логика:
gulp.task('views', function() {
gulp.src('source/*.pug')
.pipe(pug())
.pipe(gulp-if(
'home.pug',
rename(function(file) {
file.basename = 'index';
file.extname = '.html';
}),
rename(function(file) {
file.dirname = path.join(file.dirname, file.basename);
file.basename = 'index';
file.extname = '.html';
})))
.pipe(htmlmin())
.pipe(gulp.dest('dest/'))
});
Но это не сработало. Gulp создал резервную dest/home/index.html
вместо dest/index.html
.
Спасибо, Свен. Он отлично работает! –