在Rails资产管道中是否保留SCSS变量?

ruby-on-rails-3.1 CSS

小宇宙

2020-03-23

我正在使用许多SCSS样式表升级Rails应用程序以使用资产管道,并且需要为每个文件包括一些全局变量和mixins。

@import在每个文件的顶部添加几个指令不是很干,所以我想做这样的事情:

# application.css
/*
*= require variables
*= require mixins
*= require_tree .
*/

当然这是行不通的,因为变量不会在文件中持久保存。有人知道如何实现这一目标吗?

第3104篇《在Rails资产管道中是否保留SCSS变量?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

3个回答
Eva西里 2020.03.23

默认的清单语法不够强大,无法为您提供有用的Sass功能,例如共享变量,mixins等。相反,您应该:

  1. 将application.css重命名为application.scss(或在Rails 4或更早版本中重命名为application.css.scss)
  2. 而不是使用

    /*
     *= require variables
     *= require mixins
     *= require_tree .
     */
    

    废话,你现在应该使用

    @import "variables";
    @import "mixins";
    @import "blah"; // import each SCSS file in your project like this.
    

    这将确保您在整个项目中都能充分利用变量和混合变量,并在Sass允许的情况下保持DRY状态。

卡卡西 2020.03.23

简单地从每个Scss或Sass文件中导入必要的文件似乎对我有用。例如,我有一个colors.scss文件,其中包含一些常量,如下所示:

$black: #222;

我需要在application.css清单以及其他文件中使用它:

/*
 *= require colors
 *= require buttons
*/

在我的button.css.scss文件中,我只是这样做以避免发生错误:

@import "colors";
伽罗 2020.03.23

将require替换为@import,并删除所有内容,= require即使您认为已将其注释掉也是如此。

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android