SASS,Rails 3.1:在供应商/资产中加载样式表

ruby-on-rails-3.1 CSS

猴子

2020-03-24

我正在使用SASS在Rails 3.1(sass-rails 3.1)应用程序中加载样式表。例如,在SASS的partials app/assets/stylesheets使用装载@importapplication.sass-

 @import "pages/common"
 @import "pages/**/*"
 @import "jquery-ui.css"

现在,我也想加载vendor/assets/stylesheets请注意,我没有使用require vendor,这@import pages/*似乎是sass建议的方法。这里的文件将css,而不是sassscss我无法使用,@import ../../../vendor/assets/stylesheets/*因为它仅适用于sassscss文件。

有什么办法吗?

更新资料

我现在所拥有的就是这个。

application.css.scss

//= require_tree .
//= require vendor
//= require_self

这包括上面提到的所有Sass部分。require vendor

vendor/assets/stylesheets/vendor.css 好像

//= require_tree .

此方法的一个警告是,sass mixins(用户定义和插件)和公共变量并非在所有部分中都可用。我现在所拥有的是_common_imports.sass@import所有方面的第一件事。

common_imports.sass

@import "colors"
@import "compass/css3/gradient"
@import "compass/css3/border-radius"
@import "compass/css3/box-shadow"

导入common_imports所有局部文件感觉非常重复。

第3277篇《SASS,Rails 3.1:在供应商/资产中加载样式表》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

4个回答
ItachiSam 2020.03.24

尝试将扩展名更改.scss为供应商样式表。

完成此操作后,SASS即可找到所需的导入。

梅飞云 2020.03.24

哼,我想您正在以一种奇怪的方式使用资产管理器。

app / assets / ,lib / assets /和vendor / assets / *中的所有内容都映射到/ assets /中的同一位置,因此,在Web端,它们似乎都位于同一文件夹中。

当您在Rails 3.1中时,应该做的不是使用css / sass @import而是使用sprockets require

您应该在application.sass的顶部。

// require pages/common
// require_tree ./pages
// require jquery-ui
// require_self

这样链轮就可以将所有内容都放入生产环境中的同一文件中,而您不必加载一堆文件。

梅卡卡西 2020.03.24

您可以使用波纹管路径以从供应商/资产加载资产文件。

将下面的内容放入application.css文件中,效果很好。

 *= require_tree ../../../vendor/assets/stylesheets/.

Javascript资产也可以做同样的事情。

老丝 2020.03.24

请注意,如果您创建了任何新的vendor / *目录(例如vendor / stylesheets),则需要重新启动Rails。如果您在Rails 3.2或更高版本中看到此消息,则可能是最有可能的罪魁祸首。

问题类别

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