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

rob*_*ord 53 ruby-on-rails-3.1 sprockets asset-pipeline

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

//= require jquery
//= require jquery_ujs
//= require_tree .
//= require_self
Run Code Online (Sandbox Code Playgroud)

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

//= require_tree .
Run Code Online (Sandbox Code Playgroud)

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

//= require vendor_javascripts
Run Code Online (Sandbox Code Playgroud)

这看起来有点笨拙.有没有更好的方法来自动包含所有"供应商"(和/或"lib")javascripts?

PS.我看到了关于index.js文件的内容,但我最终可能会得到多个名为index.js的文件,对吧?哦,我尝试重新启动我的服务器.

Dyl*_*kow 73

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

//= require_tree ../../../vendor/assets/javascripts/.
Run Code Online (Sandbox Code Playgroud)

  • 实际上,我认为OP的建议方法不那么笨重 (11认同)
  • 我建议只在`app/assets`下添加一个`vendor`文件夹."供应商/资产"这件事似乎没必要. (2认同)

lcg*_*ida 21

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

 #vendor/assets/javascripts/my_jquery_plugins/manifest.js
 # require_tree .
Run Code Online (Sandbox Code Playgroud)

在你的application.js:

 //= require my_jquery_plugins/manifest.js
Run Code Online (Sandbox Code Playgroud)

如果你正在使用Rails 4,命名manifest.jsindex.js和你的application.js:

//= require my_jquery_plugins
Run Code Online (Sandbox Code Playgroud)

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