Grunt usemin和缓存清单

时间:2014-09-17 08:47:14

标签: angularjs gruntjs yeoman grunt-usemin

我正在使用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']
  }
},

4 个答案:

答案 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文件。