Middleman链轮指纹

时间:2012-09-30 16:03:10

标签: sprockets middleman

我正在使用带有链轮的中间人将我的js和css文件打包成一个文件。这很好用。但我想知道是否可以从中间人的链轮启用指纹功能。

e.g。我的文件all.js,其中所有内容都被编译,被重命名为all-4e17d33ff76d744900c2691a71ed83e4.js

如果可以使用图像,这也会很棒。

2 个答案:

答案 0 :(得分:7)

使用

activate :asset_hash

在您的中间人配置(Improving Cacheability)。

(您希望使用 :asset_hash:cache_buster,而不是两者。)

答案 1 :(得分:-1)

我没有为此找到开箱即用的解决方案,但我制定了自己的解决方案。在config.rb我正在运行after_build挂钩。不是最好的方式,但它有效:

after_build do
  require 'fileutils'
  delete_except "build/javascripts/", "all.js"
  delete_except "build/stylesheets/", "all.css"

  require 'digest/sha1'
  sha1 = Digest::SHA1.hexdigest Time.now.getutc.to_i.to_s
  allJS = "all-" + sha1 + ".js"
  allCSS = "all-" + sha1 + ".css"
  File.rename("build/javascripts/all.js", "build/javascripts/" + allJS)
  File.rename("build/stylesheets/all.css", "build/stylesheets/" + allCSS)

  index_file = "build/index.html"
  html = File.read(index_file)
  html = html.gsub(/all\.js/, allJS)
  html = html.gsub(/all\.css/, allCSS)

  File.open(index_file, "w") { |file| file.puts html }
end

我正在做以下事情:

  • 删除不必要的生成的.js和.css文件
  • 根据时间生成sha1哈希(这对我来说足够了)
  • 将哈希附加到文件
  • 使用新文件名更新index.html