2016-04-27 87 views
0


我需要编译SASSSCSS字符串到CSS字符串的项目。因此我使用节点包node-sass。转换SCSS工作正常,但SASS不。社科院转换萨斯字符串(不SCSS)的CSS字符串

示例代码:

'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代码。节点sass的语法是:

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

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

其他软件包的其他解决方案或建议?

+0

你还没有告诉我们为什么不起作用?您还有'outpu.css'中的拼写错误 – duncanhall

+0

感谢您的反馈! :) –

回答

3

好'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 {颜色:红}”

1

你SCSS是无效的 - 你需要提供{}在你的属性:

'use strict'; 

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

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

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

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

您可以通过添加一个选项叫使用在线工具验证您的SASS/SCSS如SassMeister

+0

对,正常的SCSS语法工作正常,但SASS语法,我需要但也没有。有一个错字,但'.red \ n color:red'应该是vaild .sass语法。 –

+0

我不确定这是否正确。看到我上面的帖子的更新 - 使用验证器,您的原始值是无效的,但我建议的值是有效的。 – duncanhall

+0

不幸的是我对SASS/SCSS并不熟悉,但我想我需要[link](http://sass-lang.com/guide)中描述的语法,在这里你可以在SCSS和SASS语法之间进行切换。因此,我认为,“.red \ n颜色:红色”应该是有效的? –