SASS:无效的@import:预期的行尾,是";" - 有时候

mas*_*omi 14 sass

我有一个只包含import语句的sass文件

@import "this";
@import "that";
Run Code Online (Sandbox Code Playgroud)

如果我从命令行运行sass一切都很好

bundle exec sass foo.scss:foo.css
Run Code Online (Sandbox Code Playgroud)

但是,如果我从脚本中运行它(也通过bundle exec),那么它会对那些分号感到不安.这个...

template = File.read("foundation.scss")
sass_engine = Sass::Engine.new(template)
sass_output = sass_engine.render
Run Code Online (Sandbox Code Playgroud)

...在sass_engine.render调用上生成以下内容:

(sass):1: Invalid @import: expected end of line, was ";". (Sass::SyntaxError)
Run Code Online (Sandbox Code Playgroud)

如果我摆脱了分号,情况就会逆转.它在命令行上而不是在脚本中抱怨.

发生了什么,如何从脚本运行时接受分号?

hca*_*lin 16

区别在于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
Run Code Online (Sandbox Code Playgroud)

中提琴!