3

i use angular-template-cache. follow code exist for remove template cache in app module but i need to remove all templateCache with gulp on dev machine.

myApp.run(function($rootScope, $templateCache) {
   $rootScope.$on('$viewContentLoaded', function() {
      $templateCache.removeAll();
   });
});
4

1 回答 1

1

避免模​​板缓存的最佳方法是修改文件。

由于您正在使用,因此您可以使用或gulp修改您的文件。gulp-revgulp-rev-all

什么是改版?

通过将内容哈希附加到文件名来进行静态资产修订unicorn.cssunicorn-d41d8cd98f.css.

即,在每次构建文件名更改时,都会避免模板缓存。您可以修改每个文件,包括.html, .css, .js,imagesvideos

由于gulp-rev-all是最新的,并且是从 中分叉出来的gulp-rev,所以我们只谈谈gulp-rev-all

修改使用gulp-rev-all

var revAll = require('gulp-rev-all');

如果你想忽略一些文件的修订,你可以这样做。

var rev = new revAll({dontRenameFile: [/^\/favicon.ico$/g, /^\/index.html/g]})

考虑您所有的文件都在文件夹中dist,并将新修订的文件保存在文件夹中www。(您也可以将它们保存在其中dist。考虑www的是您的构建目录。)

return gulp.src('dist/**')
  .pipe(rev.revision())
  .pipe(gulp.dest('www'))

接下来,创建一个manifest文件以将您的文件与修订后的文件映射。对于那个使用.manifestFile()功能。它返回一个转换函数,该函数将过滤掉任何通过管道的现有文件,并发出一个新的清单文件。必须在 .revision() 之后调用。

.pipe(rev.manifest())
.pipe(gulp.dest('www/manifest'));

将原始路径映射到修订路径的资产清单将被写入www/manifest/rev-manifest.json

{
 "css/unicorn.css": "css/unicorn.098f6bcd.css",
 "js/unicorn.js": "js/unicorn.273c2cin.js"
 ..... 
 ..... 
}

完整代码:

gulp.task('rev', () => {
  var revAll = require('gulp-rev-all'),
    rev = new revAll({dontRenameFile: [/^\/favicon.ico$/g, /^\/index.html/g]});
return gulp.src('dist/**')
  .pipe(rev.revision())
  .pipe(gulp.dest('www'))
  .pipe(rev.manifest())
  .pipe(gulp.dest('www/manifest'));
});

阅读更多关于gulp-rev-all 这里

于 2017-05-31T13:00:25.630 回答