Ada*_*dam 29 ruby ruby-on-rails ruby-on-rails-3 asset-pipeline
我想从管道中排除特定的javascript文件(modernizr),因为我希望它单独加载.
我想在开头加载Modernizr,最后我的其余javascript连接起来.
是否有办法在3.1中的资产管道中执行相反的要求?即.排除?
提前致谢.
亚当.
Ada*_*dam 56
我选择通过更改来保持链轮功能
//= require_tree
Run Code Online (Sandbox Code Playgroud)
至
//= require_directory .
Run Code Online (Sandbox Code Playgroud)
这可以使sprockets自动加载同一目录中的任何文件,但不会在任何文件夹中进一步自动加载.
这允许我将Modernizr.js移动到assets/javascripts/top文件夹,并在顶部手动加载它:
<%= javascript_include_tag "top/modernizr" %>
Run Code Online (Sandbox Code Playgroud)
并移动
<%= javascript_include_tag "application" %>
Run Code Online (Sandbox Code Playgroud)
在我的application.html.erb文件的底部(在结束体标记之上)
mcd*_*ave 23
我意识到这是一个老问题,但谷歌上周把我送到了这里,所以这不是一个过时的问题.我在其他地方找到的答案是链轮的"stub"指令.所以像
//= require-tree .
//= stub Modernizr
Run Code Online (Sandbox Code Playgroud)
这使Modernizr.js不受捆绑资产的影响.它可以包含在自己的标签中,也就是原始答案.
Sprockets更改日志说2012年1月添加了"存根",因此在第一次回答这个问题时它不会出现,但我认为现在这是一个很好的答案.
ken*_*tin 14
通过转到config/environments/production.rb文件并添加以下行,可以更轻松地完成此操作
config.assets.precompile += %w( modernizr.js )
Run Code Online (Sandbox Code Playgroud)
然后当你预编译你的资产时,现代化者将拥有你自己独立的文件,你可以在脑海中使用它.