29

I want to exclude a particular javascript file (modernizr) from the pipeline because I want it to load separately.

I want to load Modernizr at the beginning and the rest of my javascript concatenated at the end.

Is there way to do the opposite of a require in the asset pipeline in 3.1? ie. an exclude?

Thanks in advance.

Adam.

4

4 回答 4

56

我选择通过更改来保留 sprockets 功能

//= require_tree

//= require_directory .

这会使 sprockets 自动加载同一目录中的任何文件,但不会进一步加载任何文件夹中的文件。

这允许我将 Modernizr.js 移动到 assets/javascripts/top 文件夹并在顶部手动加载它:

<%= javascript_include_tag "top/modernizr" %>

并移动

<%= javascript_include_tag "application" %>

到我的 application.html.erb 文件的底部(在结束的 body 标记上方)

于 2011-11-08T23:29:50.553 回答
23

我意识到这是一个老问题,但谷歌上周把我送到了这里,所以这不是一个过时的问题。我在其他地方找到的答案是sprockets 的“存根”指令。所以像

//= require-tree .
//= stub Modernizr

这使 Modernizr.js 不受捆绑资产的影响。它可以包含在自己的标签中,就像原始答案一样。

Sprockets 变更日志说“存根”是在 2012 年 1 月添加的,所以在第一次回答这个问题时它不会可用,但我认为现在这是一个很好的答案。

于 2014-11-24T02:00:55.217 回答
15

通过转到您的 config/environments/production.rb 文件并添加以下行,这要容易得多

config.assets.precompile += %w( modernizr.js )

然后,当您预编译您的资产时,现代化器将拥有自己的单独文件,您可以在脑海中使用它。

于 2011-09-16T05:47:08.050 回答
2

这些答案已经过时了。只需active_admin.css.scss从移动app/assets/stylesheetsvendor/assets/stylesheets

active_admin.js.coffee对(从 移动app/assets/javascripts到)做同样的事情vendor/assets/javascripts

然后将在需要时加载您的资产,您无需进行修改applications.js以适应 active_admin。

此解决方案在本期中进行了描述。希望这可以帮助。

于 2013-12-17T21:37:45.747 回答