2016-05-28 5 views
1

У меня есть структура папок, как это:SASS файлов, компилировать и раздельные тему-цветные файлы с глотком

|- assets 
    |- sass 
      global.scss 
      _mixin.scss 
      _body.scss 
      _header.scss 
      _footer.scss 
      |- themes 
       blue.scss 
       base.scss 
       dark.scss 

Я хочу собрать свои Sass файлы и получить эту CSS структуру из него (самого главного что я хочу отдельные файлы CSS для моего цвета):

|- assets 
    |- cdd 
      global.css 
      |- themes 
       blue.css 
       base.css 
       dark.css 

Я использую этот gulpfile.js файл для компиляции этой

'use strict'; 

var gulp  = require('gulp'), 
concat  = require('gulp-concat'), 
plumber  = require('gulp-plumber'), 
sass  = require('gulp-sass'); 

// Gulp plumber error handler 
function errorLog(error) { 
    console.error.bind(error); 
    this.emit('end'); 
} 

// Compile Sass files into CSS 
gulp.task('sass', function() { 
return gulp.src('./assets/sass/**/*.scss') 
      // Sass - Compile Sass files into CSS 
      .pipe(sass({ 
       outputStyle: 'expanded', 
       includePaths: ['./assets/sass/'] 
      })) 
     .on('error', errorLog) 
      .pipe(gulp.dest('./assets/css')) 
}); 

gulp.task('default', ['sass']); 

не делает отдельный цветной файл для меня, а файлы цветных тем добавляются в конец файла global.css.

+0

Вы можете исключить свои темы из '' gulp.src' как обратный gulp.src ([»./ активы/sass/**/*. scss ','! ./ assets/sass/themes/*. scss]) '. Вам также нужна отдельная задача для создания ваших тем. – andorx

+0

@andorx Спасибо за вашу точку;) действительно ли команда импорта в sass-файлах имеет значение? – Ebrahim

+0

Уверен, вам нужно удалить любые темы '@ import' из вашего файла' global.scss'. Если в ваших темах есть какие-то миксины, вары, которые вам нужны, вы должны создать новый файл в папке тем, содержащий эти микшины, и импортировать его в каждый файл темы. – andorx

ответ

2

То, как я создал разные темы для проекта, заключалось в том, чтобы разделить мой scss;

|- scss 
|- |- core 
|- |- |- _all-my-scss-files-and-folders.scss 
|- |- |- _config.scss 
|- |- |- core.scss 
|- |- themes 
|- |- |- blue.scss 
|- |- |- yellow.scss 
|- |- |- pink.scss 

В _config.scss вы установили по умолчанию цветовой схемы

$colour-primary-main: #FFF !default; 
$colour-primary-secondary: #EEE !default; 
$colour-primary-tetiary: #E0E0E0 !default; 
$colour-primary-quaternary: #R4R4R4 !default; 

В ваших темах SCSS файлов, которые вы перезаписать переменные, а затем @import ваших обертоны

$colour-primary-main: #333; 
$colour-primary-secondary: #000; 
$colour-primary-tetiary: #444; 
$colour-primary-quaternary: #FEFEFE; 

@import '../core/config'; 
etc 

Затем вам нужно будет настроить новая задача gulp, которая компилирует ваши файлы SCSS темы

gulp.task('sass-theme', function() { 
    return gulp.src('assets/sass/theme/*.scss') 
    .pipe(sass({ 
     outputStyle: 'expanded', 
    })) 
    .on('error', errorLog) 
    .pipe(gulp.dest('./assets/css')) 
}); 

Вам также нужно будет игнорировать папку новые темы на вашем умолчанию задачи SCSS

gulp.task('sass', function() { 
    return gulp.src([ 
     'assets/sass/**/*.scss', 
     '!assets/sass/themes/*.scss'; 
    ]) 
    .pipe(sass({ 
     outputStyle: 'expanded', 
    })) 
    .on('error', errorLog) 
    .pipe(gulp.dest('./assets/css')) 
}); 
+0

Ваш подход хорош для файла со всеми переменными, но я думаю, что Ebrahim хочет иметь другой файл для каждой цветовой темы, поэтому удалите! ignore line, И тогда будьте осторожны с частичными файлами _file.scss и основными файлами без подчеркивания. –

+0

@ HéctorLeón Не совсем уверен, что вы говорите, но это сработает, даже если у вас нет файла _config.scss. Пока вы используете переменные, вы сможете их перезаписать. quote - «но я думаю, что Ebrahim хочет другой файл для каждой цветовой темы» - То, что делает моя вторая задача «sass-theme»? – Mark

+1

Извините, если я не правильно объяснить Просто говорю, что вы использовали | - | - | - _blue.scss | - | - | - _yellow.scss | - | - | - _pink.scss _ подчеркивание в дерзости используется для частичных, они будут скомпилированы в один файл. просто удалите его, потому что он хочет получить файл css для каждого scss? но задача работает сладко: D –

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