我们在 gulp 中使用 AwsPublish 插件。
这是 gulp 文件的代码
const day = 86400;
const farFuture = { 'Cache-Control': `max-age=${day * 365}` };
const future = { 'Cache-Control': `max-age=${day * 7}` };
const noCache = { 'Cache-Control': 'no-cache' };
const gzipTypes = '**/*.{html,css,js,svg,ico,json,txt,wasm,map,mem}';
const cacheBustedTypes = '**/*.{css,js,gif,jpeg,jpg,png,svg,webp,ttf,woff,woff2,wasm}';
const cachedTypes = '**/*.{ico}';
const noCacheTypes = '**/*.{html,json,xml,txt}';
const otherTypes = ['**/*', `!${cacheBustedTypes}`, `!${cachedTypes}`, `!${noCacheTypes}`];
const publisher = $.awspublish.create(awsSettings);
const options = {
force,
};
return gulp
.src(source, { base })
.pipe($.if(gzipTypes, $.awspublish.gzip()))
.pipe($.if(cacheBustedTypes, publisher.publish(farFuture, options)))
.pipe($.if(cachedTypes, publisher.publish(future, options)))
.pipe($.if(noCacheTypes, publisher.publish(noCache, options)))
.pipe($.if(otherTypes, publisher.publish(null, options)))
.pipe($.if(sync, publisher.sync()))
.pipe($.awspublish.reporter());
});
在 noCacheTypes 类型中添加 index.html。 Webpack 将为 css 和 js 文件生成 chunkhash,并且在更改它们时缓存将被破坏。
我们将 github 操作与这个 gulp 脚本一起使用。