У меня простая задача - создать несколько тем из файлов LESS.
gulp.task("themes-base", function () {
return gulp
.src(["./build/THEMES/*Theme.less"])
.pipe(less())
.pipe(postcss([autoprefixer()]))
.pipe(chmod(666))
.pipe(rename(function (path) {
path.dirname += "/" + path.basename + "_New";
path.basename = "styles";
path.extname = ".css";
}))
.pipe(gulp.dest("./dist/Content/Themes"));
});
Просто получите все файлы из исходного каталога и на основе имени файла создайте выходной каталог и поместите в скомпилированный css.
Get AAATheme.less and compile it to Themes/AAA/styles.css
Get BBBTheme.less and compile it to Themes/BBB/styles.css
Работает нормально.
Но теперь мне нужно для каждого обработанного файла LESS копировать ресурсы (изображения, шрифты, ...) из статической папки в папку темы.
Get everything from build/Images folder and copy all to Themes/AAA/Images
Get everything from build/Images folder and copy all to Themes/BBB/Images
Таким образом, каждая тема будет иметь одни и те же ресурсы в собственной папке.
Как я могу создать задачу, чтобы иметь возможность разрешить структуру каталогов назначения для копирования всех ресурсов после "gulp.dest"?
2 ответа
См., Например, выполнить одну и ту же задачу в нескольких папках.
const gulp = require('gulp');
const glob = require('glob');
// this gets an array of matching folders
const themeFolders = glob.sync('Themes/*/');
// console.log(themeFolders);
gulp.task('copy', () => {
let stream;
// work on each folder separately
themeFolders.forEach(function (themeFolder) {
stream = gulp.src( 'build/**/*' )
// do other stuff here is you want
.pipe(gulp.dest( themeFolder ));
});
return stream;
});
Это мощный метод, который полезно знать. Я не рассматривал случай, когда у вас есть папка Theme без файла styles.css, но эти папки при необходимости можно отфильтровать.
Просто используйте задачи copy
и /**/*
для каталогов и подкаталогов.
gulp.task('copy', function () {
gulp.src('./build/Images/**/*')
.pipe(gulp.dest('./Themes/AAA/Images'));
});
Для динамического
gulp.task('copy', function () {
return gulp.src('./build/Images/**/*')
.pipe(uglify())
.pipe(rename(function (path) {
path.dirname += "/"+path.basename;
}))
.pipe(gulp.dest('./dist/Content/Themes'));
});
Похожие вопросы
Новые вопросы
gulp
Gulp - это система сборки JavaScript, основанная на Node.js, такая как Grunt. Gulp использует потоки и конфигурацию кода для более простого и интуитивно понятного процесса сборки.