如何在缩小文件的末尾添加构建时间戳

时间:2015-04-19 07:11:44

标签: gruntjs sails.js grunt-contrib-concat

我现在有一个真正的问题,当我在制作时,当我更新我的CSS或JS时,同一个文件继续从服务器提供服务..我需要获得新的更新然后我必须硬刷新浏览器,

我想在我的缩小文件名末尾添加构建版本,所以当我的文件更新并且Grunt缩小我的文件时,它将输出一个完美的链接,这将是新下载的通过网络浏览器

现在链接就像这样

<script src="/min/production.min.js"></script>

我需要这个,

(<script src="/min/production[timestamp].min.js"></script>)

2 个答案:

答案 0 :(得分:2)

我所做的就是如下

<强>任务/ uglify.js

替换以下行

dest:'.tmp/public/min/production.min.js' 

dest: global.productionJSName 

<强>任务/帆-linker.js

将以下变量添加到您的任务中

global.timestamp = global.timestamp || new Date().getTime();
global.productionJSName = '.tmp/public/min/production-' + global.timestamp + '.min.js';

module.exports = function(grunt) {
    var productionJSName = global.productionJSName // Add this
    ...

将所有旧路径替换为 productionJSName

...
prodJs : {
    ...
    files: {
            '.tmp/public/**/*.html': [productionJSName],
            'views/**/*.html': [productionJSName],
            'views/**/*.ejs': [productionJSName]
        }
}
...
prodJsRelative : {
    ...
    files: {
            '.tmp/public/**/*.html': [productionJSName],
            'views/**/*.html': [productionJSName],
            'views/**/*.ejs': [productionJSName]
        }
}
...
prodJsJade : {
    ...
    files: {
            'views/**/*.jade': [productionJSName]
        }
}
...
prodJsRelativeJade : {
    ...
    files: {
            'views/**/*.jade': [productionJSName]
        }
}

我不确定这是最好的方法,如果你找到更好的解决方案,请告诉我。

答案 1 :(得分:1)

我认为我找到了解决静态问题的最简单的解决方案。 例如,在 tasks / sails-linker.js

prodJs: {
        options: {
            startTag: '<!--SCRIPTS-->',
            endTag: '<!--SCRIPTS END-->',
            fileTmpl: '<script src="%s?v=<%- (new Date()).getTime() %>"></script>',
            appRoot: '.tmp/public'
        },
        files: {
            '.tmp/public/**/*.html': ['.tmp/public/min/production.min.js'],
            'views/**/*.html': ['.tmp/public/min/production.min.js'],
            'views/**/*.ejs': ['.tmp/public/min/production.min.js']
        }
    },

因此,您只需添加带有时间戳(<%- (new Date()).getTime() %>)的模板注入。