我正在使用的网站使用rails资产管道和application.scss文件来导入和处理不同的css文件.
但是,某些样式表在特定位置使用,对于那些将它们导入全局清单没有意义.但不是这样导入它们需要将variables.scss和可能的mixins.scss导入到工作表本身(因此它们将正确处理),导致最终的css中出现重复的代码.
有没有办法基本告诉预处理器 – “相信我,你看到的变量/ mixin将由所有处理的时间定义”?
否则我看不到要避免将每张纸张导入单个清单,这看起来很臃肿.
谢谢.
解决方法
对你的问题的简短回答是否定的.变量需要在编译时调用时按逻辑顺序定义.这就像一个“鸡肉和鸡蛋”的场景.
从我在您的描述中可以确定的,您正在处理的项目不是编译成统一的工作流程,而是分块到与您的文件结构相关的模块化部分.如果是这种情况,您可以在每个文件的开头处执行的操作是从根引用变量文件.
在正常的工作流程中,您可以根据定义的层次结构导入scss文件,如下所示:
上海社会科学院/ style.scss
/* Main Stylesheet */ @import "variables"; @import "mixins"; /* Modular Sections */ @import "layout/header"; @import "layout/body"; @import "layout/footer";
将使用命令sass sass / style.scss:style.css编译为一个样式表style.css
我假设您的项目所做的是将所有/ * Modular Sections * /文件编译到他们自己的CSS文件中.
布局/ header.scss
/* Header Stylesheet */ @import "../variables"; @import "../mixins";
给定类似于的文件结构:
/root style.scss variables.scss mixins.scss /layouts header.scss body.scss footer.scss
这一切似乎都有点傻.我不知道当前sass编译中的所有参数,但我建议使用统一的工作流程.