【问题标题】:Rails asset pipeline: how to create custom manifest fileRails 资产管道:如何创建自定义清单文件
【发布时间】:2015-07-11 11:23:05
【问题描述】:

我正在尝试将自定义清单 javascript 文件与 application.js 分开。我从 application.js 获取代码并将其粘贴到一个名为“other_manifest.js”的新文件中,并放置在 assets/javascrips 目录中。代码如下:

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file.
//
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap
//= require_tree .

在我的 assets.rb 文件中,我添加了以下行:

Rails.application.config.assets.precompile += %w(other_manifest.js)

我在本地预编译和清理资产,然后当我运行页面时,我得到的只是清单文件中的确切文本。它没有引入任何文件。如何创建自定义清单文件?

【问题讨论】:

  • 您是否替换了app/views/layouts/application.html 文件中的application.js
  • 我输入了 if/else,所以根据页面,application.js 或 other_manifest.js 出现

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


【解决方案1】:

轻松

你有application.js。创建第二个文件:other_manifest.js

然后在您的布局中layouts/application.html.erb(可能是完全不同的布局):

<% if condition %>
  <%= javascript_include_tag 'other_manifest' %>
<% else %>
  <%= javascript_include_tag 'application' %>
<% end %>

是的,您需要添加config/initializers/assets.rb(然后重新启动):

Rails.application.config.assets.precompile += %w(other_manifest.js)

另外,请确保从清单中删除 //= require_tree .。因为它将在清单中包含所有 javascript(使具有不同的清单毫无意义)

【讨论】:

  • 我正在尝试这样做,但仍需要包含 require_tree 。这似乎打破了以下错误: Sprockets::CircularDependencyError in Index#index .. 我需要 require_tree 。工作,因为资产/javascripts 文件夹中有大约 100 多个角度文件,并且我需要的差异已通过 bower_components 添加并位于单独的目录中.. 想法?
  • @Starfs require_tree . 将需要其他 JS 清单文件。将所有共享的 JS 放到共享目录中,然后执行require_tree ./shared 或类似的事情
  • @Rusian 作为旁注我仍然无法完成这项工作,但最终只是在 /views/layout/application.html.erb
  • @Starfs 使用资产管道部署到生产环境时要小心。因为application.js会变成application-2sadf324gsx234dfasdf.......js
  • 您似乎在描述 OP 尝试过的事情,但对他们没有用。这种方法似乎不起作用。
猜你喜欢
  • 1970-01-01
  • 2014-08-28
  • 2014-08-05
  • 2012-02-07
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多