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



我发现了几个不同的线程,其中包括vendor/assets目录中的资产,但没有找到对我有用的任何东西。以前,我将所有供应商资产都放在app/目录中,但将JavaScript移至vendor/assets/javascripts/目录,将CSS移至vendor/assets/stylesheets/目录。

我现在正在尝试将我的供应商资产加载到开发和生产中,但它们根本没有加载。这是我的assets.rb文件:

# Be sure to restart your server when you modify this file.
# Version of your assets, change this if you want to expire all your assets.
Rails.application.config.assets.version = '1.0'
# Add additional assets to the asset load path
# Rails.application.config.assets.paths << Emoji.images_path
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
Rails.application.config.assets.precompile += [
  Rails.root.join('vendor/assets/javascripts/*').to_s,
  Rails.root.join('vendor/assets/stylesheets/*').to_s
]

我还尝试将vendor/assets/目录添加到Rails.application.config.assets.paths,但这无济于事。

如何将所有供应商资产包括在资产管道中?

update

我通过将以下内容添加到app/assets/javascripts/application.js

来加载我的供应商JavaScript。
//= require_tree ../../../vendor/assets/javascripts/.

但是,我正在使用SASS,但仍然无法将SCSS文件加载。

我终于在记住轨道资产负载路径和链轮是不同的系统后终于弄清楚了。这是我所做的:

config/initializes/assets.rb中,我添加了以下行:

# Add additional assets to the asset load path
Rails.application.config.assets.paths += [
  Rails.root.join('vendor', 'assets').to_s
]
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
Rails.application.config.assets.precompile += [
  Rails.root.join('vendor/assets/javascripts/*').to_s,
  Rails.root.join('vendor/assets/stylesheets/*').to_s
]

第一个块将供应商资产添加到铁轨资产路径中。这使我可以在视图助手中使用供应商资产(例如:image_tag(。第二个块允许我的供应商JavaScript和CSS与我的其余资产进行预编译。

然后,我将以下行添加到//= require_tree .上方的app/assets/javascripts/application.js

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

这将自动添加到我的应用程序中,我放入vendor/assets/javascripts中的所有JavaScript文件。

对于Sass,我将以下内容添加到app/assets/stylesheets/application.sass

@import "../../../vendor/assets/stylesheets/*";

我在@import "*";之前添加了此行,以便我自己的应用程序的样式偏爱。这将包括我的应用程序中的所有供应商SASS文件。然后,我将所有供应商.css文件重命名为使用.scss扩展名。

现在开发正常,我担心预兼容。我在本地运行了rails assets:precompile,果然,我的所有供应商资产都包含在内!

最新更新