如何在gulp-sass中编译多个主题?

时间:2016-05-09 18:37:12

标签: css sass gulp-sass node-sass

我尝试使用相同的文件编译多个主题。我的文件夹结构如下

-styles
  green.scss
  red.scss
  -scss
     -control1.scss
     -control2.scss

我需要基于绿色和红色主题的control1和control2 css文件的输出。

     var gulp = require('gulp');         
     var sass = require('gulp-sass');
     var config = {
        includePaths: [
          './styles/green.scss',
          './styles/red.scss'       
        ]       
    };
     gulp.src('./styles/scss/*.scss')
        .pipe(sass(config).on('error', sass.logError))
        .pipe(gulp.dest('./style/css/'));

我是gulp-sass的新手,请任何人建议gulp-sass或node-sass中有没有可用的选项来生成多个主题?

我需要输出

-styles
 -css
   -green.control1.css
   -green.control2.css
   -red.control1.css
   -red.control2.css

1 个答案:

答案 0 :(得分:1)

我会将您的文件的组织更改为以下设置。我接下来会解释新文件:

-styles
  main-green1.scss
  main-green2.scss
  main-red1.scss
  main-red2.scss  

  - colors
    - green.scss
    - red.scss
  -controls
     -control1.scss
     -control2.scss

对于那些新的.scss文件。每个文件都将导入颜色文件和控制文件。例如,main-green1.scss将是:

@import 'colors/green';
@import 'controls/control1';

main-green2.scss将是:

@import 'colors/green';
@import 'controls/control2';

只要green.scssred.scss中的变量名称相同,您就会得到所需的结果。这是一个更详细的例子:

<强> green.scss

$color: #00cc00;
$background: #003300;

<强> red.scss

$color: #e50000;
$background: #330000;

<强> control1.scss

body {
  background-color: $background;
  color: $color;
}

<强> control2.scss

body {
  background-color: $color;
  color: $background;
}

您可以更改Gulp脚本以构建新的main-文件。编译的文件将是:

主要-green1.css

body {
  background-color: #00cc00;
  color: #003300;
}

主要-green2.css

body {
  background-color: #003300;
  color: #00cc00;
}

主要-red1.css

body {
  background-color: #e50000;
  color: #330000;
}

主要-red2.css

body {
  background-color: #330000;
  color: #e50000;
}