我有一个Django应用程序,我正在使用Webpack生成app.js和vendor.js
在prod构建过程中,app.js和vendor.js用她的chunkhash重命名。
我想知道用<script src="main.01451e14689405a4cb58.js"></script>替换template/base.html<script src="main.js"></script>的最佳实践
我试过用
plugins: [
new ReplaceInFileWebpackPlugin([{
dir: 'template',
files: ['base.html'],
rules: [{
search: 'main.bundle.js',
replace: 'main.[chunkhash].bundle.js'
}]
}])
]
但〔chunkhash〕没有被哈希替换。
我的完整webpack.config.js:
const path = require('path')
var glob = require('glob');
const miniCssExtractPlugin = require('mini-css-extract-plugin')
const ReplaceInFileWebpackPlugin = require('replace-in-file-webpack-plugin')
config = {
entry: glob.sync('./src/js/**/*.js'),
plugins: [
new miniCssExtractPlugin(),
new ReplaceInFileWebpackPlugin([{
dir: 'dist',
files: ['index.html'],
rules: [{
search: 'main.js',
replace: 'main.[chunkhash].js'
}]
}])
],
devServer: {
static: path.resolve(__dirname, 'dist'),
port: 8080,
hot: true
},
module: {
rules: [
{
test: /\.scss$/,
use: [
{
loader: 'style-loader'
},
{
loader: 'css-loader'
},
{
loader: 'postcss-loader',
options: {
postcssOptions: {
plugins: () => [
require('autoprefixer')
]
}
}
},
{
loader: 'sass-loader'
}
]
}
]
},
resolve: {
alias: {
"vue": 'vue/dist/vue.esm-bundler.js'
}
},
optimization: {
splitChunks: {
cacheGroups: {
vendor: {
test: /[\\/]node_modules[\\/]/,
name: 'vendors',
chunks: 'all'
}
}
}
}
}
module.exports = (env, argv) => {
if (argv.mode === 'development') {
config.output = {
filename: '[name].js',
path: path.resolve(__dirname, 'dist')
}
config.devtool = 'eval-source-map'
} else {
config.output = {
filename: '[name].[chunkhash].js',
sourceMapFilename: '[name].[chunkhash].js.map',
path: path.resolve(__dirname, 'dist')
}
config.devtool = 'source-map'
}
return config;
};