最近几天我一直在解决这个问题,并确定了以下过程。
使用bower-rails gem。它提供了许多不错的 rake 任务,有助于将 bower 的使用与 rails 应用程序和资产管道集成。我更喜欢使用 bower.json 配置,而不是 bower-rails 提供的基于 ruby 的 DSL。我坚持将资产存储在 vendor/assets/bower_components 中的默认 bower 位置。确保将以下内容添加到您的 application.rb。
config.assets.paths << Rails.root.join("vendor","assets","bower_components")
将包添加到 bower.json 后,运行以下命令:
rake bower:install
安装你的 javascript 包。然后在 application.js 和 application.css 文件中引用 javacript。
正如@andrew-hacking 上面提到的那样,rails 和 bower 不能很好地与具有 css 和图像的 javascript 包配合使用,特别是引用图像的 css。Bower-rails 通过提供的 rake 任务帮助解决此问题:
rake bower:resolve
它通过使用 rails helper 方法重写组件 css 文件中的 url 引用以资产管道友好的方式引用资产来解析组件中的相对资产路径。有关详细信息,请参阅BowerRails::Performer#resolve_asset_paths。
我的偏好是将所有 bower_components 签入到我们的存储库中,因此我们运行 bower:install,然后运行 bower:resolve。然后,您需要将包中引用的图像添加到 config.assets.precompile 列表中,以用于您的登台和生产环境。例如,这里是使用 bower 和 rails 将select2 javascript 组件添加到您的 rails 项目的设置。
bower.json:
{
"name": "Acme",
"private": true,
"dependencies": {
"select2": "3.5.1"
}
}
应用程序/资产/javascripts/application.js.coffee:
#= require select2/select2
应用程序/资产/样式表/application.css.sass
//= require select2/select2
config/environments/staging.rb 和 config/environments/production.rb:
config.assets.precompile += ["select2/*.png",
"select2/*.gif"]
它并不完美,但它为您提供了 javascript 组件的依赖管理,并且最好尝试找出您需要拉入哪些 gem 才能为资产管道启用所需的 javascript 组件。