如何使用 gulp 删除 templateCache?
how to remove templateCache with gulp?
我使用 angular-模板缓存。
按照存在的代码删除应用程序模块中的模板缓存,但我需要在开发机器上使用 gulp 删除所有 templateCache。
myApp.run(function($rootScope, $templateCache) {
$rootScope.$on('$viewContentLoaded', function() {
$templateCache.removeAll();
});
});
避免模板缓存的最佳方法是修改您的文件。
由于您使用的是 gulp
,您可以使用 gulp-rev
或 gulp-rev-all
修改文件。
什么是修改?
通过将内容哈希附加到文件名来修改静态资产 unicorn.css
→ unicorn-d41d8cd98f.css
.
即,在每次构建时文件名都会更改,这样可以避免模板缓存。
您可以修改每个文件,包括 .html
、.css
、.js
、images
、videos
等
由于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()
函数。 returns 一个转换函数,它将过滤掉通过管道的任何现有文件并发出一个新的清单文件。必须在 .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
here
我使用 angular-模板缓存。 按照存在的代码删除应用程序模块中的模板缓存,但我需要在开发机器上使用 gulp 删除所有 templateCache。
myApp.run(function($rootScope, $templateCache) {
$rootScope.$on('$viewContentLoaded', function() {
$templateCache.removeAll();
});
});
避免模板缓存的最佳方法是修改您的文件。
由于您使用的是 gulp
,您可以使用 gulp-rev
或 gulp-rev-all
修改文件。
什么是修改?
通过将内容哈希附加到文件名来修改静态资产 unicorn.css
→ unicorn-d41d8cd98f.css
.
即,在每次构建时文件名都会更改,这样可以避免模板缓存。
您可以修改每个文件,包括 .html
、.css
、.js
、images
、videos
等
由于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()
函数。 returns 一个转换函数,它将过滤掉通过管道的任何现有文件并发出一个新的清单文件。必须在 .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
here