Gruntjs 编程grunt rev/grunt usemin以使用提交id

Gruntjs 编程grunt rev/grunt usemin以使用提交id,gruntjs,Gruntjs,grunt rev的默认行为是评估给定的资源并在路径中放置内容的散列,因此/images/sprites/rewards.png变成/images/sprites/f936712a.rewards.png 我不想那样。我同时发布了几个版本,我希望能够随意删除旧版本,因此我想将其重命名为/2013-06-10-e75607/images/sprites/rewards.png(其中e75607是整个版本的提交id,与单个文件无关) grunt rev和grunt usemin是否有这种可能性?有没

grunt rev的默认行为是评估给定的资源并在路径中放置内容的散列,因此/images/sprites/rewards.png变成/images/sprites/f936712a.rewards.png

我不想那样。我同时发布了几个版本,我希望能够随意删除旧版本,因此我想将其重命名为/2013-06-10-e75607/images/sprites/rewards.png(其中e75607是整个版本的提交id,与单个文件无关)

grunt rev和grunt usemin是否有这种可能性?有没有一个等效的工具可以做到这一点

编辑

有几个人问我为什么不使用每个文件的哈希。让我解释一下:

在旧式网站中,为了响应几乎所有的用户输入,浏览器被重新加载,后端根据输入生成一个全新的页面,HTML被发送到浏览器,浏览器显示页面。这是一个缓慢、CPU和带宽密集型的过程,但它确实有一个优势:所有加载的资产都在几秒钟内加载到一起

在更现代的网站中,加载的页面描述了整个应用程序。当用户进行一些输入时,页面上的Javascript会呈现新的DOM元素,并根据需要加载新的资产。页面作为一个整体很少或从未被重新加载。因此,站点的响应性大大提高(而且更容易开发,更安全,运行更便宜,等等),但也有相应的缺点:在页面加载数小时或数天之后,资产可能会被加载

比如,您在上午10点访问该站点,该站点运行的是cd1d0906版本。10:30,网站升级到版本4b571377。上午11点,按下一个按钮,弹出一个名为sprite.png的图像。显然,您需要的是cd1d0906版本的sprite.png,而不是4b571377版本

因此,一个维护良好的站点将在版本更改后的几天内继续提供所有资产的旧版本。最简单的方法是将所有资产保存在以版本命名的目录中


这种“不必要地”丢弃未更改文件的缓存项的抱怨是相当不令人信服的。大多数部署的资产是CSS文件、JS文件和Sprite,它们都是许多较小文件的编译。这是一个罕见的部署,不改变一个CSS文件、一个JS文件和一个sprited图像。在版本更改后,缓存很少有价值。

为什么?如果资产在修订之间发生变化,那么生成的哈希将不同,因此我看不到用例。哇。我被反对的次数开始让我头晕目眩。我会在原来的问题中做一个解释。有效的观点是你的@Malvolio