Rails资产管道:包含所有/供应商/资产/ javascripts /的标准方式?

时间:2012-01-25 17:05:50

标签: ruby-on-rails-3.1 asset-pipeline sprockets

我一直在将应用程序转换为Rails 3.1(现在转到3.2)并观看了Railscast on the asset pipeline。我将所有第三方jquery插件文件移动到/ vendor / assets / javascripts /目录。在我的/app/assets/javascripts/application.js中,我有以下内容:

//= require jquery
//= require jquery_ujs
//= require_tree .
//= require_self

我意识到require_tree .调用仅加载/ app / assets / javascripts /目录的树。 (这是正确的吗?)包含所有“供应商”javascripts的最佳方式是什么? (我现在并不担心订购。)当然,我可以在/app/assets/javascripts/application.js中逐行索取。我的另一个想法是使用以下内容创建/vendor/assets/javascripts/vendor_javascripts.js:

//= require_tree .

然后在/app/assets/javascripts/application.js中添加以下内容:

//= require vendor_javascripts

但这似乎有点笨拙。有没有更好的方法来自动包含所有“供应商”(和/或“lib”)javascripts?

PS。我看到this about index.js files,但我最终会得到多个名为index.js的文件,对吗?哦,我尝试重新启动我的服务器。

2 个答案:

答案 0 :(得分:73)

您可以在app/assets/javascripts/application.js文件中添加这样的内容,以包含所有供应商的javascripts:

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

答案 1 :(得分:21)

我知道这是一个老问题,但你可以在vender / assets / javascript文件夹中创建一个清单文件:

 #vendor/assets/javascripts/my_jquery_plugins/manifest.js
 # require_tree .

在你的application.js中:

 //= require my_jquery_plugins/manifest.js

如果您使用的是Rails 4,请将manifest.js命名为index.js,并将application.js命名为<{1}}:

//= require my_jquery_plugins

它比所描述的相对路径更少hacky。