Запуск Gulp с сохранением структуры папок без Gulp

Сегодня я начал смотреть gulp.js, чтобы скомпилировать мои файлы less и т. д.

У меня есть задача, но все скомпилированные файлы помещаются в одну папку, а исходная иерархия не поддерживается.

Есть ли способ гарантировать, что выходные данные сохранят исходную файловую структуру?

Я новичок в gulp, поэтому, возможно, делаю это неправильно.

Вот мой файл gulp (часть, относящаяся к Less):

var sourceLess = 'app/assets/stylesheets/less';
var targetCss = 'public/css2';

// Compile Our Less
gulp.task('less', function() {
return gulp.src([sourceLess + '/my-bootstrap-theme.less', sourceLess + '/themes/*.less'])
    .pipe(less())
    .pipe(minifyCss())
    .pipe(gulp.dest(targetCss));
});

Я хотел бы, чтобы файлы Less из папки исходных тем помещались в папку назначения тем. Какие варианты мне не хватает?

Должен ли я запускать их как отдельные задачи?

Спасибо

Обновление: я просмотрел предлагаемый пост и изменил пути к этому:

gulp.src([sourceLess + '/**/my-bootstrap-theme.less', sourceLess + '/themes/**/*.less', sourceLess + '/responsive.less'], {
    base: 'sourceLess'
})

Я также изменил свои переменные каталога на это:

var sourceLess = './app/assets/stylesheets/less';
var targetCss = './public/css2';

Но он не создает папку themes, как я ожидал.


person Ray    schedule 22.02.2014    source источник
comment
Похоже, вы устанавливаете base в 'sourceLess', строку, а не sourceLess, переменную.   -  person OverZealous    schedule 24.02.2014


Ответы (2)


Если вы хотите сохранить подпапки, вы должны определить базу в параметрах (2-й аргумент), например, чтобы сохранить «assets/file.doc» в «dist/»:

gulp.src(["assets/file.doc"], {base: "."})
    .pipe(gulp.dest("dist/"));

проверить по ссылке https://github.com/gulpjs/gulp/issues/151

ура, чидан

person Chidu Murthy    schedule 24.12.2014

Вам нужно использовать два потока

var sourceLess  = 'app/assets/stylesheets/less';
var targetCss   = 'public/css2';

gulp.task('less', function() {

    // my-bootstrap-theme.less
    gulp.src(sourceLess + '/my-bootstrap-theme.less')
        .pipe(less())
        .pipe(minifyCss())
        .pipe(gulp.dest(targetCss));

    // themes/*.less
    gulp.src(sourceLess + '/themes/*.less')
        .pipe(less())
        .pipe(minifyCss())
        .pipe(gulp.dest(targetCss + '/themes'));

});
person Wahyu Kristianto    schedule 23.02.2014
comment
Нет, не знают. Им просто нужно включить опцию base в gulp.src(), ссылку на которую я дал в своем комментарии. На SO уже несколько раз отвечали. - person OverZealous; 24.02.2014