Webpack 静态网站图像缓存破坏
Webpack static website images cache busting
我正在使用 webpack-html-plugin
生成单页静态网站。我正在尝试为静态资产(尤其是图像)实施缓存破坏。我还有一个开放图形图像的元标记,如下所列。
我的 webpack.config.js
看起来是这样的:
module.exports = {
entry: './src/init.js',
output: {
path: './build',
filename: 'bundle.js',
},
module: {
loaders: [{
test: /\.js?$/,
exclude: /node_modules/,
loader: 'babel-loader'
}, {
test: /\.(jpe?g|png|gif|svg)$/,
loader: 'file-loader?name=assets/images/[name].[ext]?[hash]'
}, {
test: /\.ejs$/,
loader: 'ejs-loader?variable=data'
}],
plugins: {
new HtmlWebpackPlugin({
template: 'src/index.ejs',
inject: 'head',
hash: true
})
}
}
}
index.ejs
文件如下所示:
<!DOCTYPE html>
<html>
<head>
<!-- ... -->
<meta property="og:image" content="http://cdn/images/og.jpg"/>
<!-- ... -->
<link href="bundle.css?e0aad4b4f9d09a3a49dc" rel="stylesheet">
<script type="text/javascript" src="bundle.js?e0aad4b4f9d09a3a49dc">
</head>
<body>
<!-- ... -->
<img src="/images/logo.png" />
<!-- ... -->
</body>
我的目标是让 webpack 为我的图像添加哈希,就像它为 js 和 css 添加它们一样。我知道为了触发图像加载器,我需要 require
js 中的图像,但我的 init.js
只包含 jquery 插件初始化。
我尝试查看以下加载程序以与 ejs-loader
集成
html-loader
+ extract-loader
+ file-loader
但我一无所获。
任何帮助将不胜感激:)
解决方案非常简单,实际上我把事情复杂化了。
基本上我需要做的只是 require
ejs 标签内的图像,像这样:
index.ejs
<img src="<%= require('./assets/images/logo.png') %>" />
似乎 webpack 让我习惯了以复杂的方式做简单的事情。不过这次不是:)
我正在使用 webpack-html-plugin
生成单页静态网站。我正在尝试为静态资产(尤其是图像)实施缓存破坏。我还有一个开放图形图像的元标记,如下所列。
我的 webpack.config.js
看起来是这样的:
module.exports = {
entry: './src/init.js',
output: {
path: './build',
filename: 'bundle.js',
},
module: {
loaders: [{
test: /\.js?$/,
exclude: /node_modules/,
loader: 'babel-loader'
}, {
test: /\.(jpe?g|png|gif|svg)$/,
loader: 'file-loader?name=assets/images/[name].[ext]?[hash]'
}, {
test: /\.ejs$/,
loader: 'ejs-loader?variable=data'
}],
plugins: {
new HtmlWebpackPlugin({
template: 'src/index.ejs',
inject: 'head',
hash: true
})
}
}
}
index.ejs
文件如下所示:
<!DOCTYPE html>
<html>
<head>
<!-- ... -->
<meta property="og:image" content="http://cdn/images/og.jpg"/>
<!-- ... -->
<link href="bundle.css?e0aad4b4f9d09a3a49dc" rel="stylesheet">
<script type="text/javascript" src="bundle.js?e0aad4b4f9d09a3a49dc">
</head>
<body>
<!-- ... -->
<img src="/images/logo.png" />
<!-- ... -->
</body>
我的目标是让 webpack 为我的图像添加哈希,就像它为 js 和 css 添加它们一样。我知道为了触发图像加载器,我需要 require
js 中的图像,但我的 init.js
只包含 jquery 插件初始化。
我尝试查看以下加载程序以与 ejs-loader
html-loader
+ extract-loader
+ file-loader
但我一无所获。 任何帮助将不胜感激:)
解决方案非常简单,实际上我把事情复杂化了。
基本上我需要做的只是 require
ejs 标签内的图像,像这样:
index.ejs
<img src="<%= require('./assets/images/logo.png') %>" />
似乎 webpack 让我习惯了以复杂的方式做简单的事情。不过这次不是:)