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

How to add a build timestamp at the end of the minified files

我现在有一个真正的问题,当我在生产时,每当我更新我的 CSS 或 JS 时,相同的文件一直从服务器提供服务。我需要获得新的更新然后我必须用力刷新浏览器,

我正在考虑在我的缩小文件名末尾添加一个构建版本,所以每当我的文件更新并且 Grunt 缩小我的文件时,它会输出一个完美的 link将被网络浏览器新下载

现在link是这样的

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

我需要这样,

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

我为此所做的工作如下

tasks/uglify.js

替换下一行

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

dest: global.productionJSName 

tasks/sails-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]
        }
}

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

我想我找到了解决静态刷新问题的最简单方法。 例如在 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() %>)。