Rails 3.1 Pipeline - исключить файл Javascript
Я хочу исключить конкретный файл javascript (modernizr) из конвейера, потому что я хочу, чтобы он загружался отдельно.
Я хочу загрузить Modernizr в начале, а остальная часть моего javascript будет конкатенирована в конце.
Есть ли способ сделать противоположное требование в конвейере активов в 3.1? то есть. исключить?
Спасибо заранее.
Адам.
Ответы
Ответ 1
Я решил сохранить функциональность звездочек, изменив
//= require_tree
к
//= require_directory .
Это держит звездочки для автоматической загрузки любых файлов в один и тот же каталог, но не в любые папки.
Это позволило мне переместить Modernizr.js в папку assets/javascripts/top и вручную загрузить его вверху:
<%= javascript_include_tag "top/modernizr" %>
и переместите
<%= javascript_include_tag "application" %>
В нижней части моего файла application.html.erb(над тегом закрывающего тела)
Ответ 2
Я понимаю, что это старый вопрос, но Google отправил меня сюда на прошлой неделе, так что это не устаревший вопрос. Ответ, который я нашел в другом месте, был директива "stub" для звездочек. Так что что-то вроде
//= require-tree .
//= stub Modernizr
Это не приведет к тому, что Modernizr.js выйдет из комплекта. Он может быть включен со своим собственным тегом, по первому ответу.
Журнал изменений Sprockets говорит, что "stub" был добавлен в январе 2012 года, поэтому он не был доступен в тот момент, когда на этот вопрос был дан первый ответ, но я думаю, что это хороший ответ.
Ответ 3
Это намного проще сделать, перейдя в файл config/environment/production.rb и добавив следующую строку
config.assets.precompile += %w( modernizr.js )
Затем, когда вы прекомпилируете свои активы, у модернизатора будет свой собственный файл, который вы можете использовать в своей голове.
Ответ 4
Эти ответы устарели. Просто переместите active_admin.css.scss
от app/assets/stylesheets
до vendor/assets/stylesheets
.
Сделайте то же самое с active_admin.js.coffee
(перейдите от app/assets/javascripts
до vendor/assets/javascripts
).
Затем ваши ресурсы будут загружаться по мере необходимости, и вам не придется вносить изменения в applications.js
для размещения active_admin.
Это решение описано в этой проблеме. Надеюсь, это поможет.