Rails 资产管道:包含所有 /vendor/assets/javascripts/ 的标准方式?

Posted

技术标签:

【中文标题】Rails 资产管道:包含所有 /vendor/assets/javascripts/ 的标准方式?【英文标题】:Rails asset pipeline: Standard way for including all /vendor/assets/javascripts/? 【发布时间】:2012-02-18 21:06:45 【问题描述】:

我一直在将应用程序转换到 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/ 目录的树。 (对吗?)包含 all“供应商”javascript 的最佳方式是什么? (此时我不担心订购。)当然,我可以在 /app/assets/javascripts/application.js 中逐行要求它们。我的另一个想法是使用以下内容创建 /vendor/assets/javascripts/vendor_javascripts.js:

//= require_tree .

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

//= require vendor_javascripts

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

忘记了整个相对路径的事情 :) 谢谢,效果很好! 实际上,我认为 OP 建议的方法不那么笨重 我建议在app/assets 下添加一个vendor 文件夹。 vendor/assets 似乎没有必要。 我倾向于同意,但 Rails 的新应用默认布局为您提供 vendor/assets,所以我认为很多人会尝试实现这一点:/【参考方案2】:

我知道这是一个老问题,但您可以在 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 中:

//= require my_jquery_plugins

它比描述的相对路径更简单。

【讨论】:

以上是关于Rails 资产管道:包含所有 /vendor/assets/javascripts/ 的标准方式?的主要内容,如果未能解决你的问题,请参考以下文章

Rails 5 - 如何在资产管道中包含所有供应商资产?

Rails 3:资产管道+许多布局

Rails 资产管道挂起

Rails 3.1 资产管道和手动订购的 Javascript 需要

开发中的 rails 3.1 资产管道 css 缓存

针对 IE 4096 选择器/样式表限制的 Rails 资产管道解决方案