Grunt usemin和缓存清单



我正在用grunt构建一个使用缓存清单的angular应用程序。我的问题是,在将所有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']
  }
},

我知道这个问题有点老,但我只是解决了一些类似的问题,找不到很多答案来帮助我。您最好的选择是继续使用filerev,并使用类似于grunt manifest的grunt清单创建者。您希望文件名在更新(使用filerev)时发生更改,以便清单文件也会发生更改。这是应用程序缓存知道需要更新的唯一方法。

在你安装了grunt清单之后,在你的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

在构建之前,我在manifest.cfm中手工编写了新路径。我不确定是否真的有一种方法可以让它被任何繁重的任务自动重写。

您可以从您的grunt构建任务中注释"filerev"任务。这将省去您在新构建之后的重写。

可能正在坏死此线程,但存在:https://github.com/JoshSchreuder/grunt-manifest-generator

它将扫描给定的html文件,并自动将其中的所有javascript/css/html文件包括在内。

相关内容

  • 没有找到相关文章

最新更新