あなたはここで正しい軌道に乗っています。grunt-usemin
探しているもののほとんどを処理しますが、他のパッケージが必要です。CSS/JS の縮小化を有効にするには、 grunt-contrib-cssmin (CSS 用)、grunt-contrib-uglify (JS 用)の組み合わせを使用する必要があります。 、キャッシュの破壊にはgrunt-revを使用することをお勧めします。
スクリプトを意図したとおりに機能させるには、useminPrepare タスクを確認してください。これにより、CSS および JS ファイルをラップして、それらに対してタスクを実行できます。たとえば、私のプロジェクトでは Bower のグッズをたくさん使用しているため、私の footer.html には次のように記述されています。
<!-- build:js js/scripts.min.js -->
<script src="./bower_components/zepto/zepto.js"></script>
<script src="./bower_components/underscore/underscore-min.js"></script>
<script src="./bower_components/eventEmitter/EventEmitter.js"></script>
<script src="./bower_components/eventie/eventie.js"></script>
<script src="./bower_components/imagesloaded/imagesloaded.js"></script>
<script src="./bower_components/spin.js/spin.js"></script>
<script src="./scripts/lib/zepto.touch.module.js"></script>
<!-- endbuild -->
実行useminPrepare
すると、これらすべてが「収集」され、圧縮/縮小に使用できる構成オブジェクトが作成されます。私のタスクは次のようになります。
grunt.registerTask('produce',[
'clean:main', // clean out the /dist directory if it exists
'copy', // copy files to /dist
'useminPrepare', // prepare an object of files that will be passed to concat and/or uglify
'concat', // concatenate assets
'uglify', // minify assets
'usemin', // use the minified version of these files in my html
'compass:produce', // run production version of compass
'clean:post' // cleanup junk
]);
本当にタイムスタンプを使用したい場合は、<!-- build -->
コメントに追加することを検討できますが、それが機能するかどうかは完全にはわかりません (テストしていません)。Yeoman/grunt-usemin のメンテナーの 1 人である Addy Osmani は、grunt-rev のみを使用することを推奨しています: https://github.com/yeoman/grunt-usemin/issues/104。
最後の箇条書きについては、tmp ファイルを作成する必要があると思います。そうしないと、ベース HTML を破壊的に編集することになります。それがあなたのやりたいことなら、できると思いますが、そうしないことを強くお勧めします。