Rails 资产管道:只编译一次外部库以减少部署时间

Rails asset pipeline: Compile external libraries only once to decrease deployment time

我的 Rails 项目中有一堆外部 javascript 库,它们都包含在 application.js 中,因此它们在每次部署到 Heroku 时都会预编译,运行时间为很久了。

您对如何减少资产编译时间有什么建议吗?如果可能的话,不使用 CDN。

谢谢。

为了将来参考,以下是我解决问题的步骤:

  1. 在适当的文件夹中添加外部资产,vendor/assets/javascripts 或 vendor/assets/stylesheets
  2. 将资产导入从应用程序清单移动到 app/assets/javascripts/external.js 或 app/assets/stylesheets/external.css.scss
  3. 将 config/application.rb 中的 config.assets.precompile 行更改为 config.assets.precompile = ['external.js', 'external.css'](注意 = 而不是 +=)
  4. 运行 耙子 assets:precompile
  5. 从 public/assets 中删除 manifest.yml 因为它向 Heroku 指示它是否应该编译资产
  6. 将生成的 public/assets 文件夹推送到源代码管理
  7. 将 config.assets.precompile 行改回原来的样子

这样,external.js 和 external.css 在本地编译,application.js 和 application.css 在部署时编译。就我而言,部署时间现在快两倍多。它确实需要一些手动工作,但可以作为耙子实施。