Ruby on rails 3.1 在rails资产管道中持久化SCSS变量?
我正在升级一个带有大量SCSS样式表的rails应用程序,以使用资产管道,并且需要为每个文件包含一些全局变量和混合 在每个文件的顶部添加几个Ruby on rails 3.1 在rails资产管道中持久化SCSS变量?,ruby-on-rails-3.1,asset-pipeline,sass,Ruby On Rails 3.1,Asset Pipeline,Sass,我正在升级一个带有大量SCSS样式表的rails应用程序,以使用资产管道,并且需要为每个文件包含一些全局变量和混合 在每个文件的顶部添加几个@import指令并不是很枯燥,因此我想这样做: # application.css /* *= require variables *= require mixins *= require_tree . */ $black: #222; 当然,这不起作用,因为变量不会在文件中持久化。有人知道如何做到这一点吗?似乎不可能。最后在每个文件前面加上@impo
@import
指令并不是很枯燥,因此我想这样做:
# application.css
/*
*= require variables
*= require mixins
*= require_tree .
*/
$black: #222;
当然,这不起作用,因为变量不会在文件中持久化。有人知道如何做到这一点吗?似乎不可能。最后在每个文件前面加上
@import'includes/all'
和包含包含/all.css.scss
中的所有其他内容,从每个scss或Sass文件导入必要的文件似乎对我很有效。例如,我有一个colors.scss文件,其中包含如下常量:
# application.css
/*
*= require variables
*= require mixins
*= require_tree .
*/
$black: #222;
我需要在application.css清单中包含它以及其他一些文件:
/*
*= require colors
*= require buttons
*/
在我的buttons.css.scss文件中,我只是这样做以避免错误:
@import "colors";
默认清单语法的功能不足以为您提供有用的Sass功能,如共享变量、混合等。相反,您应该:
/*
*= require variables
*= require mixins
*= require_tree .
*/
胡说,你现在应该用
@import "variables";
@import "mixins";
@import "blah"; // import each SCSS file in your project like this.
这将确保您在整个项目中充分利用变量和混合,并尽可能保持Sass允许的干燥将require替换为@import并删除任何
=require
,即使您认为已将其注释掉。这并不能解决问题。目的是避免从每个scss文件导入它们。你的答案和我的一样。无论如何谢谢:)同意。这也是我一直在做的。值得指出的是,这个解决方案的一个烦恼是,所有的css最终都在一个文件中。css的想法是它仍然单独加载每个css文件(在开发中),这有助于QA,因为您知道网络流量中包含的每个文件。(通过sass,您仍然可以检查问题,并在sass添加的注释中看到它来自的.scss文件)我相信您可以使用rails输出源代码映射(),因此您可以直接检查源文件。在使用新的@import
语法时,您是否仍然可以使用/*=require_tree.
,但是,如果不使用@import
,就失去了重用mixin或变量等的好处。所以最好完全切换到@import
。