我想使用fs或replace替换css文件中的确切变量值,我已经搜索了足够的但我发现只替换fs和替换中的文件,下面是我试图这样做的代码,但我想替换css文件中的变量
//to main.css
var css = selectedTemplatePath + '/css/';
var mainCss = css + '/main.css';
var themecolor = new ThemeColor(req.body.color);
themecolor.color = color;
themecolor.savecolor(function(err, app ){
fs.stat(mainCss, function(err, stat){
var searchApp = {
_id: appId
};
mainCss.findOne(searchApp, function(err, app){
if(err) return console.error(err);
replaceThemecolor(app, themecolor);
console.log("k");
});
});
function replaceThemecolor(themecolor) {
fs.readFile(mainCss, 'utf-8',
function(err, data) {
if (err) {
return console.log(err);
}
var result = data.replace('black', themecolor);
fs.writeFile(mainCss, result, 'utf-8', function (err) {
if (err) return console.log(err)
.success("success");
console.log('Success');
});
});
};
下面是css文件,我想将.background-color中的颜色替换为我从客户端获取的主题颜色
.background-color{
color:black;
}
答案 0 :(得分:1)
您可以使用css-parser
:
.background-color{
color:black;
}
.menu-color{
color:black;
}
解析,并获取传入的对象in-form JSON,找到选择器(background-color
)到所需的vaue属性(color: black
),用必要的(color: timecolor
)替换它,并转换回文本:
{ "type": "stylesheet",
"stylesheet": {
"rules": [
{ /.../
"selectors": [ ".background-color" ],
"declarations": [
{ /.../
"property": "color",
"value": "black", // => `timecolor`
/.../
}
}
], /.../
}
},
{ /.../
"selectors": [ ".menu-color" ],
"declarations": [
{ /.../
"property": "color",
"value": "black",
/.../
}
}
], /.../
}
},
], /.../
}