2017-05-31 22 views
3

私は角度テンプレートキャッシュを使用します。 アプリケーションモジュールのテンプレートキャッシュを削除するためのコードがありますが、dev machineでgulpを含むすべてのtemplateCacheを削除する必要があります。gulpでtemplateCacheを削除するにはどうすればよいですか?

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

答えて

1

テンプレートキャッシングを避ける最も良い方法は、ファイルのリビジョン化です。

gulpを使用しているため、gulp-revまたはgulp-rev-allを使用してファイルを改訂することができます。

リビジョンアップとは何ですか?

ファイル名にコンテンツハッシュを追加することによるスタティックアセットリビジョンunicorn.cssunicorn-d41d8cd98f.css

つまり、すべてをビルドするとファイル名が変更され、テンプレートキャッシュが回避されます。 あなたが改正.html.css.jsimagesを含むすべてのファイル、gulp-rev-all以来videosなど

gulp-revから最新のとフォークであることができ、の約gulp-rev-allだけ話をしましょう。

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

あなたがリビジョンからいくつかのファイルを無視したい場合、あなたはこのようにそれを行うことができます:gulp-rev-allを使用してリビジョン

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

すべてのファイルがフォルダdistにあり、フォルダwwwに新しいrevisionedファイルを保存することを検討してください。(あなたはまた、distに保存することができます。wwwあなたのビルドディレクトリで考える。)

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

次に、manifestファイルを作成して、ファイルをリビジョン1にマップします。その使用のために.manifestFile()機能。パイプを通過する既存のファイルをフィルタリングし、新しいマニフェストファイルを生成する変換関数を返します。 .revision()の後に呼び出さなければなりません。 revisionedパスに元のパスをマッピング

.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-allhereについてもっと知ります

+0

お返事ありがとうございますが、私はテンプレートキャッシングのための角度テンプレートキャッシュを使用しています。私はdevマシンでgulpを使ってtemplateCacheを削除したいと思います。 –