在供应商中添加所有供应商文件

时间:2013-10-28 00:51:37

标签: ruby-on-rails ruby-on-rails-4 asset-pipeline

是否可以使用单独的application.cssapplication.js文件添加供应商第三方库中的所有文件?

我可以将这两个文件添加到Vendor文件夹和require_tree下,如下所示吗?

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

有人说我应该包含在app/assets/stylsheets/application.css文件中,但我认为还有其他方法,如上所述。

2 个答案:

答案 0 :(得分:0)

尝试将其放入您的javascript文件(vendor.js)中:

//= require_tree ../../../vendor/assets/javascripts/.

这在你的css文件(vendor.css)中:

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

您可以将这些内容放在app/assets/stylesheets/vendor.cssapp/assets/javascripts/vendor.js中,然后将其包含在_head.html.erb部分中:

<%= stylesheet_link_tag "vendor", :media => "screen, projection" %>
<%= javascript_include_tag "vendor" %>

确保将这些内容添加到您要预编译的资产中(config / environments / production.rb):

config.assets.precompile += ['vendor.css', 'vendor.js']

另外,很酷的用户名! :d

答案 1 :(得分:0)

你可以稍微调整一下

  

Sprockets使用名为index(带有相关扩展名)的文件用于特殊目的。

     

例如,如果您有一个包含许多模块的jQuery库(存储在lib / assets / library_name中),则文件lib / assets / library_name / index.js将用作此库中所有文件的清单。该文件可以包括所有必需文件的列表,或简单的require_tree指令http://guides.rubyonrails.org/asset_pipeline.html#manifest-files-and-directives(见2.2.2)

也就是说,您的供应商CSS目录为vendor/assets/css/foo,其中包含以下文件

/foo
  bar.css
  baz.css

然后,您可以使用以下内容创建文件foo/index.css

/= require_tree ./

然后,您可以将此lib包含在主application.css中

/= require foo

免责声明

  1. 我自己没有使用上述技术。我只是按照指南进行了假设。

  2. 我自己建议逐一要求CSS作为CSS中的顺序。即使文件在供应商中,您也可以直接在application.css中使用它们,如

    /= require foo/bar
    /= require foo/baz