我有一个json文件列表,每个文件都包含几个键值对,用于指示颜色,文本大小和其他此类信息。我还有一组scss
个文件,包括一个variables.scss
文件,其中包含这些非常变量的默认值(颜色,文本大小等)。
在将默认变量的值替换为json文件中指示的值之后,如何获取Gulp任务以生成与json文件一样多的css
个文件?
JSON
文件示例:
{
"css": {
"color": "#337019",
"textSize": "15px"
}
}
基本variables.scss
文件内容:
$themeColor: #356AA0;
$fontSize: 13px;
在上面的示例中,json
文件中 color 的值将替换$themeColor
文件中scss
变量的值。
答案 0 :(得分:1)
尝试在构建中使用此Gulp包:https://www.npmjs.com/package/json-sass
之前我用它来转换这个JSON:
{
"black": {
"base": "#000000"
},
"blue": {
"base": "#0000aa"
}
}
到这个SCSS文件:
$palettes: (
black: (
base: #000000
),
blue: (
base: #0000aa
)
);
使用这个简单的Gulp任务:
var gulp = require('gulp');
var jsonSass = require('json-sass');
var source = require('vinyl-source-stream');
var rename = require('gulp-rename');
var fs = require('fs');
var sourceFolder = 'json/';
var sourceFileName = sourceFolder + 'colors.json';
var destFolder = 'css/scss/partials/';
var destFileName = '_json-colors.scss';
gulp.task('sass-json-colors', function() {
return fs.createReadStream(sourceFileName)
.pipe(jsonSass({
prefix: '$palettes: ',
}))
.pipe(source(sourceFileName))
.pipe(rename(destFileName))
.pipe(gulp.dest(destFolder));
});