2016-04-27 2 views
0


Мне нужно собрать SASS и SCSS Струны для CSS Струны для проекта. Поэтому я использую узел узла узла. Преобразование SCSS работает отлично, но SASS этого не делает.Преобразование Sass String (не SCSS) в CSS Строка

Пример кода для 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 " 

Так что, очевидно, узел-сасс не может скомпилировать код .sass. Синтаксис node-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()); 

Log: ".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 color: red» должен быть действительным? –