Подтвердить что ты не робот

SASS: Недопустимый @import: ожидаемый конец строки, был ";" - иногда

У меня есть файл sass, который содержит только операторы импорта

@import "this";
@import "that";

если я запустил sass из командной строки все хорошо

bundle exec sass foo.scss:foo.css

Если, однако, я запускаю его из script (также через bundle exec), он расстраивается из-за этих точек с запятой. Это...

template = File.read("foundation.scss")
sass_engine = Sass::Engine.new(template)
sass_output = sass_engine.render

... вызывает вызов sass_engine.render:

(sass):1: Invalid @import: expected end of line, was ";". (Sass::SyntaxError)

если я избавлюсь от точки с запятой, тогда ситуация изменится на противоположную. Он жалуется на командную строку, а не на script.

Что происходит, и как заставить его принимать точки с запятой при запуске из script?

4b9b3361

Ответ 1

Отличие заключается в том, что программа командной строки Sass отмечает расширение "scss" и анализирует файл как SCSS вместо традиционного Sass. При программировании вы запускаете движок Sass и не говорите ему, что это SCSS.

Итак, ошибка заключается в том, что он читает ее как Sass вместо SCSS.

http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#options

Это должно решить вашу проблему правильно!

template = File.read("foundation.scss")
sass_engine = Sass::Engine.new(template, :syntax => :scss)
sass_output = sass_engine.render

Viola!