将Sass String(不是SCSS)转换为CSS String

时间:2016-04-27 09:32:23

标签: css node.js sass node-sass


我需要为项目编译 SASS SCSS 字符串到 CSS 字符串。因此我使用节点包node-sass。转换SCSS工作正常,但SASS没有。

SASS的示例代码:

'use strict';

var sass = require('node-sass');

var dataTemp = 'body{background:blue; a{color:black;}}';

var output = sass.renderSync({
  data: dataTemp
});

console.log(output.css.toString());

问题来了,当我尝试转换这样的东西时,这应该是有效的.sass语法

'use strict';

var sass = require('node-sass');

var dataTemp = '.red\n color: red';

var output = sass.renderSync({
  data: dataTemp
});

console.log(output.css.toString());

控制台输出:

Error: Invalid CSS after ".": expected 1 selector or at-rule, was ".red color: red "

显然node-sass无法以这种方式编译.sass代码。 node-sass的语法是:

var result = sass.renderSync({
  data: scss_content
  [, options..]
});

在对象内部,您可以定义选项甚至函数。也许有办法在这样的函数中编译数据吗?

其他套餐的其他解决方案或建议吗?

2 个答案:

答案 0 :(得分:4)

通过添加名为'indentedSyntax'的选项并将其设置为'true',node-sass也可以编译.sass代码。对不起,应该更准确地阅读文档。谢谢你的帮助!

'use strict';

var sass = require('node-sass');

var dataTemp = '.red\n color: red';

var output = sass.renderSync({
  data: dataTemp,
  indentedSyntax: true,
  outputStyle : 'compressed'
});

console.log(output.css.toString());

记录:“。red {color:red}”

答案 1 :(得分:2)

您的SCSS无效 - 您需要在您的媒体资源周围提供{}

'use strict';

var sass = require('node-sass');

var dataTemp = '.red {color: red}';

var output = sass.renderSync({
  data: dataTemp
});

console.log(output.css.toString());

您可以使用SassMeister

等在线工具验证您的SASS / SCSS