2014-02-09 5 views
1

У меня есть многоуровневая структура в моем каталоге app/assets/sass /, который я пытаюсь отразить в выходных файлах CSS в public/css/, но все * .scss-файлы в моем sass каталог и подкаталоги помещаются в корневую папку public/css/.Структура каталогов входных файлов, сглаженных на выходе

Вот мой gulpfile: Когда я закомментируйте строки между gulp.src(sassDir ...) и .pipe(gulp.dest('public/css')); поддерживается структура каталогов, но пререкаться не компилируется. Разоблачение строки .pipe(sass(...)) воспроизводит эту проблему.

var gulp = require('gulp'); 
var plumber = require('gulp-plumber'); 
var gutil = require('gulp-util'); 
var minifycss = require('gulp-minify-css'); 
var autoprefixer = require('gulp-autoprefixer'); 
var sass = require('gulp-ruby-sass'); 
var coffee = require('gulp-coffee'); 

var sassDir = 'app/assets/sass/'; 
var coffeeDir = 'app/assets/coffee/'; 

gulp.task('sass', function() { 
    return gulp.src(sassDir + '**/*.scss', { base: sassDir }) 
     .pipe(plumber()) 
     .pipe(sass({ style: 'compress' }).on('error', gutil.log)) 
     .pipe(autoprefixer('last 10 versions')) 
     .pipe(minifycss()) 
     .pipe(gulp.dest('public/css')); 
}); 

gulp.task('coffee', function() { 
    return gulp.src(coffeeDir + '**/*.coffee', { base: coffeeDir }) 
     .pipe(plumber()) 
     .pipe(coffee({ bare: true }).on('error', gutil.log)) 
     .pipe(gulp.dest('public/js/coffee)')); 
}); 

gulp.task('watch', function() { 
    gulp.watch(sassDir + '/**/*.scss', ['sass']); 
    gulp.watch(coffeeDir + '/**/*.coffee', ['coffee']); 
}); 


gulp.task('default', ['sass', 'coffee', 'watch']); 
+0

Я написал ответ на этот вопрос. Посмотрите: http://stackoverflow.com/a/33741640/2140095 – brnmonteiro

ответ

3

Информация структуры каталогов хранится в 'file.base'. Следующий код сказал мне, что «gulp-ruby-sass» меняет «file.base».

gulp.task('sass', function() { 
    return gulp.src(sassDir + '**/*.scss') 
     .on('data', function (file) { console.log(0, file.base); }) 
     .pipe(plumber()) 
     .on('data', function (file) { console.log(1, file.base); }) 
     .pipe(sass({ style: 'compress' }).on('error', gutil.log)) 
     .on('data', function (file) { console.log(2, file.base); }) 
     .pipe(autoprefixer('last 10 versions')) 
     .on('data', function (file) { console.log(3, file.base); }) 
     .pipe(minifycss()) 
     .on('data', function (file) { console.log(4, file.base); }) 
     .pipe(gulp.dest('public/css')); 
}); 

К счастью, этот вопрос уже сообщался. Скоро это будет исправлено.

https://github.com/sindresorhus/gulp-ruby-sass/pull/20

Кроме того, «базовый» должен быть абсолютный путь, и вам не нужно указывать «{база: sassDir}» в этом случае. Это автоматически определяется данным шаблоном шара.

https://github.com/wearefractal/glob-stream

Смежные вопросы