2011-12-17 25 views
13

Tôi đã có một tập tin sass mà chỉ chứa câu lệnh importSASS: @import không hợp lệ: kết thúc dự kiến ​​của dòng, là ";" - đôi khi

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

nếu tôi chạy sass từ dòng lệnh mọi thứ đều tốt

bundle exec sass foo.scss:foo.css 

Nếu, tuy nhiên tôi chạy nó từ bên trong một kịch bản (cũng thông qua gói exec) nó được buồn bã về những dấu chấm phẩy. Này ...

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

... sản xuất sau đây trên các cuộc gọi sass_engine.render:

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

nếu tôi thoát khỏi những dấu chấm phẩy sau đó tình hình đang bị đảo ngược. Nó phàn nàn trên dòng lệnh và không có trong kịch bản lệnh.

Điều gì đang diễn ra và làm cách nào để tôi chấp nhận dấu chấm phẩy khi chạy từ tập lệnh?

Trả lời

14

Sự khác biệt là chương trình dòng lệnh Sass thông báo phần mở rộng "scss" và phân tích cú pháp tệp dưới dạng SCSS thay vì Sass truyền thống. Khi thực hiện nó theo chương trình, bạn đang bắt đầu một động cơ Sass và không nói rằng đó là SCSS thay thế.

Vì vậy, lỗi là đọc nó dưới dạng Sass thay vì SCSS.

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

này cần khắc phục vấn đề của bạn ngay!

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

Viola!

+0

Thật là một lỗi lạ! Điều này rất hữu ích. –

Các vấn đề liên quan