新しいことをやってみるシリーズ:Play Framework2.3.1でcssをバージョニングしたい

bootstrapなどのcssはバージョンが決まっているので、

<link rel='stylesheet' href='@routes.WebJarAssets.at(WebJarAssets.locate("css/bootstrap.min.css"))'>

 のようにテンプレートに書いておくことで

<link rel='stylesheet' href='/webjars/bootstrap/3.2.0/css/bootstrap.min.css'>

 みたいに出力がされます。新しいバージョンが出たから新しくしたいなあと思ったら、

build.sbtの

"org.webjars" % "bootstrap" % "3.2.0"

を変えるだけで済みます。ただ、自分で作ったcssについてはそんなバージョニングしませんので、変更をしたらよろしく新しいcssにしてブラウザのキャッシュを効かないようにしたいところ。

よくやる方法としては

<link rel="stylesheet" href="/assets/stylesheets/main.min.css?20140101">

のように日付を入れる方法ですね。

これと同じ方法をPlay Frameworkで実現するには、

routes

GET         /vassets/*file          controllers.Assets.versioned(path="/public", file: Asset)

main.scala.html

<link rel="stylesheet" href="@routes.Assets.versioned("stylesheets/main.min.css")">

とかってやると

<link rel="stylesheet" href="/vassets/stylesheets/29be9ce7f79bfc0738851fb0287e5ac4-main.min.css">

みたいになってほしいのだが、何故かバックスラッシュが入るだけ・・・

<link rel="stylesheet" href="/vassets/\stylesheets\main.min.css">