用gulp建立SASS时设置一个变量?

Dyl*_*lan 5 sass gulp gulp-sass

我使用以下内容gulp从SASS(*.scss)文件构建一个CSS文件:

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

var colortheme = 'blue';

gulp.task('build_css', function() {
  return gulp.src(['resources/assets/sass/app/' + colortheme + '.scss'])
             .pipe(sass())
             .pipe(gulp.dest('public/css/'));
} );
Run Code Online (Sandbox Code Playgroud)

如您所见,我为每个colortheme使用不同的.scss文件.

我想只使用一个.scss文件,但能够以某种方式将colortheme作为参数传递,因此这可以用作.scss文件中的变量.

这可能吗?

Sve*_*ung 14

考虑到它是SCSS,您可以使用gulp-header以下命令在文件开头简单地填充变量定义:

资源/资产/上海社会科学院/应用/ theme.scss

.foo {
  color: $themeColor;
  font-family:$themeFont;
}
Run Code Online (Sandbox Code Playgroud)

gulpfile.js

var gulp = require('gulp');
var sass = require('gulp-sass');
var header = require('gulp-header');

var colortheme = 'blue';
var font = 'sans-serif';

gulp.task('build_css', function() {
  return gulp.src(['resources/assets/sass/app/theme.scss'])
   .pipe(header('$themeColor: ' + colortheme + ';\n' +
                '$themeFont: ' + font + ';\n'))
   .pipe(sass())
   .pipe(gulp.dest('public/css/'));
});
Run Code Online (Sandbox Code Playgroud)