将 Sass 字符串(不是 SCSS)转换为 CSS 字符串

Cle*_*ler 1 css sass node.js node-sass


\n我需要将SASSSCSS字符串编译为CSS项目的因此我\xc2\xb4m使用节点包node-sass。转换 SCSS 工作正常,但 SASS 不行。

\n\n

SASS 的示例代码:

\n\n
\'use strict\';\n\nvar sass = require(\'node-sass\');\n\nvar dataTemp = \'body{background:blue; a{color:black;}}\';\n\nvar output = sass.renderSync({\n  data: dataTemp\n});\n\nconsole.log(output.css.toString());\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
\'use strict\';\n\nvar sass = require(\'node-sass\');\n\nvar dataTemp = \'.red\\n color: red\';\n\nvar output = sass.renderSync({\n  data: dataTemp\n});\n\nconsole.log(output.css.toString());\n
Run Code Online (Sandbox Code Playgroud)\n\n

控制台输出:

\n\n
Error: Invalid CSS after ".": expected 1 selector or at-rule, was ".red color: red "\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
var result = sass.renderSync({\n  data: scss_content\n  [, options..]\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

对于其他软件包还有其他解决方案或建议吗?

\n

Cle*_*ler 5

通过添加名为“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());
Run Code Online (Sandbox Code Playgroud)

日志:“.red{颜色:红色}”