首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将时间戳添加到Grunt文件名的末尾

将时间戳添加到Grunt文件名的末尾
EN

Stack Overflow用户
提问于 2015-04-14 18:24:34
回答 2查看 4K关注 0票数 3

在我的Grunt任务期间,在我的文件名的末尾添加一个唯一的字符串。我试过grunt-contrib-copygrunt-filerev.也没能做我需要他们做的..。

目前,我的较少的文件是自动编译在‘保存’的崇高文本3(因此,这还没有发生在我的任务)。然后,我打开我的终端并运行'grunt',它连接(组合)我的JS文件。完成之后,grunt应该在文件名的末尾用一个“版本”重命名'dist/css/main.css‘和'dist/js/main.js’。

我试过:

  • grunt-contrib-copy ('clean:expired‘在grunt-contrib-copy’重命名文件之前删除连接的JS )
  • grunt-filerev (因为某种原因只能在CSS文件上工作,它在'.css‘之前插入版本号。不知道为什么它不能在JS文件上工作。

这是我的Gruntfile.js

因此,明确地说,我并不是要求“代码评审”--我只需要知道如何将“重命名”过程合并起来,以便当任务完成时,我将在各自的目录中保留‘dist/css/main.css 12345&dist/js/main.js 12345’,而不是'dist/css/main.css‘或'dist/js/main.js’。

提前感谢您的帮助!

更新:在尝试了这个之后,我最终使用了格朗特,它工作得很好!我相信同样的结果可以通过咕噜-回音-复写实现,事实上我知道它会做同样的事情。所以这两种方法都有用。至于对regex的支持,不确定两者是否都支持regex,所以在选择以下插件之前,可能还有其他一些值得研究的地方:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-15 12:46:58

您的rename:dist看起来应该做您想做的事情,您只需要将clean:dist移动到运行的第一个任务(因此它从先前的构建中删除内容,而不是当前的构建)。任务的顺序由最后一行的数组定义:

代码语言:javascript
复制
grunt.registerTask('default', ['jshint:dev', 'concat:dist', 'less:dist', 'csslint:dist', 'uglify:dist', 'cssmin:dist', 'clean:dist', 'rename:dist']);

尽管如此,我不知道你为什么要这样做。更常见的做法是在文件扩展名之前将文件的散列插入文件名中。

散列和时间戳的区别在于,只要文件内容不改变,散列值就会始终相同--因此,如果您只更改一个文件,则该文件的编译输出将有所不同,因此浏览器只需在使用其他文件的缓存版本时重新下载该文件。

将这个数字放在文件扩展名之前和扩展名之后的不同之处在于,许多工具(如IDE)的行为都是基于扩展名进行更改的。

为了实现这个更标准的目标,有很多方法可以实现它,但其中一个更常见的方法是将grunt-filerevgrunt-usemin相结合,这将创建正确命名的文件,并更新您的HTML文件以引用这些新的文件名。

票数 1
EN

Stack Overflow用户

发布于 2015-04-15 12:35:59

我不确定完全理解您想要的是什么目的,但是如果您在gruntfile的开头添加了一个var timestamp = new Date().getTime();并连接到您的dest param中,那么就应该完成这项工作。

代码语言:javascript
复制
dest: 'dist/js/main.min.js' + timestamp

这就是你要找的东西吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29634745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档