首页 > 解决方案 > 导入的 css 文件不会编译成 application.css 文件

问题描述

我有一个 style.scss 文件,我在其中导入了许多其他文件,例如

@import url(asset-path('bootstrap/css/bootstrap.min.scss'));
@import url(asset-path('ionicons/css/ionicons.min.scss'));
@import url(asset-path('slick-carousel/slick/slick.scss'));
@import url(asset-path('slick-carousel/slick/slick-theme.scss'));
@import url(asset-path('owl-carousel/assets/owl.carousel.min.scss'));
@import url(asset-path('owl-carousel/assets/owl.theme.default.scss'));
@import url(asset-path('owl-carousel/assets/carousel.min.scss'));
@import url(asset-path('bxslider/jquery.bxslider.min.scss'));
@import url(asset-path('magicsuggest/magicsuggest-min.scss'));

这些文件位于 vendor/ 目录下。

在生产模式下查看网络选项卡,服务器向每个从 scss 文件中导入的文件发出请求,而不是在文件下编译它们。

我也在使用 sass rails gem。我对 Rails 资产管道有什么不了解的地方吗?

标签: ruby-on-railsasset-pipeline

解决方案


混乱来自这样一个事实,即 SASS 以某种方式覆盖了 @import 指令。

在您的情况下,使用纯CSS 的 @import 指令,因为您正在传递url(..,正如您注意到的那样,它会为每个文件发出 HTTP 请求。

为了使用 SASS 的 @import 版本(它将导入和组合内容),您需要在引号中传递文件:

...  
@import 'slick-carousel/slick/slick.scss';
...

这是关于SASS'@import的详细解释


推荐阅读