我有一个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; };