我正在使用grunt构建一个使用缓存清单的角度应用。 我的问题是,在将所有js文件连接并缩小为一个之后,manifest.cfm不会被重写,这使得其中的路径不正确。
以下是我的一些Gruntfile.js:
// Reads HTML for usemin blocks to enable smart builds that automatically
// concat, minify and revision files. Creates configurations in memory so
// additional tasks can operate on them
useminPrepare: {
html: '<%= yeoman.app %>/index.html',
css: ['<%= yeoman.dist %>/styles/{,*/}*.css'],
options: {
dest: '<%= yeoman.dist %>',
flow: {
html: {
steps: {
js: ['concat', 'uglifyjs'],
css: ['cssmin']
},
post: {}
}
}
}
},
// Performs rewrites based on rev and the useminPrepare configuration
usemin: {
html: ['<%= yeoman.dist %>/{,*/}*.html','<%= yeoman.dist %>/{,*/}*.tpl.html', '<%= yeoman.dist %>/views/templates{,*/}*.tpl.html'],
css: ['<%= yeoman.dist %>/styles/{,*/}*.css'],
options: {
assetsDirs: ['<%= yeoman.dist %>', '<%= yeoman.dist %>/images', '<%= yeoman.dist %>/images/icons-app']
}
},
答案 0 :(得分:2)
我知道这个问题有点陈旧,但我刚刚解决了类似问题,但找不到多少帮助。您最好的选择是继续使用filerev并使用像grunt-manifest这样的grunt清单创建者。您希望文件名在更新时更改(使用filerev),因此清单文件也会更改。这是应用程序缓存知道它需要更新的唯一方法。
安装grunt-manifest之后,grunt文件中的这样的配置应该按照你的要求进行:
manifest: {
generate: {
options: {
basePath: 'app/',
network: ['*'],
preferOnline: true
},
src: [
'scripts/*.js',
'styles/*.css',
'images/*.*',
'views/{,*/}*.html'
],
dest: 'dist/cache.manifest'
}
}
更多信息:http://bnlconsulting.com/blog/the-browser-cache-and-angular
答案 1 :(得分:0)
我最终在建立之前手工编写了manifest.cfm中的新路径。我不确定是否真的有办法让任何grunt任务自动重写它。
答案 2 :(得分:0)
你可以在你的grunt构建中评论“filerev”任务。在新版本之后,这将使您无需重写。
答案 3 :(得分:0)
可能会对此线程进行消解,但有:https://github.com/JoshSchreuder/grunt-manifest-generator
它将扫描给定的html文件并自动包含所有javascript / css / html文件。