2016-04-27 91 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顏色:紅色」應該是有效的? –