Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用Grunt在文件名末尾添加时间戳_Node.js_Gruntjs_Grunt Contrib Copy - Fatal编程技术网

Node.js 使用Grunt在文件名末尾添加时间戳

Node.js 使用Grunt在文件名末尾添加时间戳,node.js,gruntjs,grunt-contrib-copy,Node.js,Gruntjs,Grunt Contrib Copy,在我的Grunt任务中,在我的文件名末尾添加一个唯一的字符串。我尝试了grunt contrib copy和grunt filerev。他们都没能做我需要他们做的事 目前,我的LESS文件是在Sublime Text 3的“保存”中自动编译的(因此在我的grunt任务中还没有出现这种情况)。然后,我打开终端并运行“grunt”,它连接(组合)我的JS文件。完成此操作后,grunt应在文件名末尾使用“version”重命名“dist/css/main.css”和“dist/js/main.js”

在我的Grunt任务中,在我的文件名末尾添加一个唯一的字符串。我尝试了grunt contrib copygrunt filerev。他们都没能做我需要他们做的事

目前,我的LESS文件是在Sublime Text 3的“保存”中自动编译的(因此在我的grunt任务中还没有出现这种情况)。然后,我打开终端并运行“grunt”,它连接(组合)我的JS文件。完成此操作后,grunt应在文件名末尾使用“version”重命名“dist/css/main.css”和“dist/js/main.js

我试过:

  • grunt contrib copy(“clean:expired”在grunt contrib copy”可以重命名文件之前删除连接的JS)
  • grunt filerev(“出于某种原因,它只对CSS文件起作用,并且在“.CSS”之前插入了版本号。不确定为什么它对JS文件不起作用。”)

因此,要明确的是,我不是要求“代码审查”,我只是需要知道如何合并“重命名”过程,以便在任务完成后,在各自的目录中保留“dist/css/main.css12345&dist/js/main.js12345”,而不保留“dist/css/main.css”或“dist/js/main.js”

提前感谢您的帮助


更新:在试用之后,我最终使用了它,效果非常好!我相信同样的结果可以通过,事实上我知道它做同样的事情。因此,两者都会起作用。至于对regex的支持,不确定两者是否都支持,因此在选择这些插件之前,可能还有其他值得研究的地方:)

我不确定是否完全理解您想要的目的,但是如果您添加一个
var timestamp=new Date().getTime()
在gruntfile的开头,并连接到应该执行此任务的
dest
param

dest: 'dist/js/main.min.js' + timestamp

这就是您要找的吗?

您的
重命名:dist
看起来它应该做您想做的事情,您只需要移动
clean:dist
作为第一个运行的任务(因此它会从以前的版本而不是当前版本中删除内容)。任务的顺序由最后一行上的数组定义:

grunt.registerTask('default', ['jshint:dev', 'concat:dist', 'less:dist', 'csslint:dist', 'uglify:dist', 'cssmin:dist', 'clean:dist', 'rename:dist']);
也就是说,我不知道你为什么想要这种行为。更常见的做法是在文件扩展名之前将文件的哈希插入文件名

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

将此数字放在文件扩展名之前和扩展名之后的区别在于,许多工具(如IDE)的行为会根据扩展名而改变


对于这个更标准的目标,有很多方法可以实现,但其中一个更常见的方法是将
grunt filerev
与之结合,它将创建正确命名的文件,并更新您的HTML文件以引用这些新的文件名

这就是我开始玩它之后所做的:)谢谢!我想在结尾的原因是因为我们的网站是使用名为NitroSell的软件构建的。他们有自己的服务器(我们的站点所在的服务器),在上面提到的版本控制设置中进行配置。由于“MIME类型错误”(也称为Firefox,它不允许.js12345文件执行脚本,因为它不是有效的文件类型),因此不允许JS文件在Firefox中运行。这很奇怪,因为NitroSell的JS文件运行良好。所以是的,我最终开始在扩展之前插入我的版本。。。再次感谢你的回答!这也是我所做的。我刚刚使用了
dest:'dist/js/main'+date+'.js'
where
var-date='