Как добавить метку времени сборки в конец минифицированных файлов

У меня сейчас настоящая проблема, когда я нахожусь на производстве и когда я обновляю свой CSS или JS, один и тот же файл продолжает работать с сервера .. Мне нужно получить новые обновления, тогда мне нужно сильно обновить браузер,

Я думаю о том, как добавить версию сборки в конце моего уменьшенного имени файла, поэтому, когда мои файлы обновляются, а Grunt минимизирует мои файлы, он выводит идеальную ссылку, которая будет заново загружена веб-браузером.

Прямо сейчас ссылка такая

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

Мне нужно, чтобы это было,

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

person Sahan    schedule 19.04.2015    source источник


Ответы (2)


Для этого я сделал следующее

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]
        }
}

Я не уверен, что это лучший способ, дайте мне знать, если найдете лучшее решение.

person Ryan Wu    schedule 19.04.2015
comment
Братан, пока работает отлично, не могли бы вы рассказать мне, как вы этому научились? Вы выучили Grunt с самого начала? Пожалуйста, посоветуйте мне это. Ура, приятель - person Sahan; 19.04.2015
comment
Привет, я не учился ворчанию с самого начала, я научился этому, отслеживая код Sails.js. Это означает, что я узнаю, что мне нужно использовать. - person Ryan Wu; 20.04.2015

Думаю, я нашел самые простые решения проблемы с обновлением статики. Например, в 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() %>).

person AdyOS    schedule 20.04.2015