Reputation: 1818
I have a folder structure like this:
|- assets
|- sass
global.scss
_mixin.scss
_body.scss
_header.scss
_footer.scss
|- themes
blue.scss
base.scss
dark.scss
I want to compile my sass files and get this css structure out of it (the most important is that I want separate css files for my color):
|- assets
|- cdd
global.css
|- themes
blue.css
base.css
dark.css
I'm using this gulpfile.js file to compile this
'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']);
it is not making separate color file for me, and the color theme files are appended in the end of the global.css file
Upvotes: 2
Views: 1496
Reputation: 2071
The way I created different themes for a project was to split my scss like so;
|- scss
|- |- core
|- |- |- _all-my-scss-files-and-folders.scss
|- |- |- _config.scss
|- |- |- core.scss
|- |- themes
|- |- |- blue.scss
|- |- |- yellow.scss
|- |- |- pink.scss
Within _config.scss
you set your default colour scheme
$colour-primary-main: #FFF !default;
$colour-primary-secondary: #EEE !default;
$colour-primary-tetiary: #E0E0E0 !default;
$colour-primary-quaternary: #R4R4R4 !default;
Within your themes scss files you overwrite your variables and then @import
your partials
$colour-primary-main: #333;
$colour-primary-secondary: #000;
$colour-primary-tetiary: #444;
$colour-primary-quaternary: #FEFEFE;
@import '../core/config';
etc
You then will need to set up a new gulp task that compiles your theme SCSS files
gulp.task('sass-theme', function () {
return gulp.src('assets/sass/theme/*.scss')
.pipe(sass({
outputStyle: 'expanded',
}))
.on('error', errorLog)
.pipe(gulp.dest('./assets/css'))
});
You also will need to ignore the new themes folder on your default scss task
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'))
});
Upvotes: 3