我现在有一个真正的问题,当我在制作时,当我更新我的CSS或JS时,同一个文件继续从服务器提供服务..我需要获得新的更新然后我必须硬刷新浏览器,
我想在我的缩小文件名末尾添加构建版本,所以当我的文件更新并且Grunt缩小我的文件时,它将输出一个完美的链接,这将是新下载的通过网络浏览器
现在链接就像这样
<script src="/min/production.min.js"></script>
我需要这个,
(<script src="/min/production[timestamp].min.js"></script>)
答案 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() %>
)的模板注入。