webpack - Webpack 删除生产构建中的 HTML 注释
问题描述
当我进行 Webpack 生产构建时,如何删除 HTML 文件中的注释?
在 Webpack 中进行生产构建后,我想要没有注释的 html 文件。
当前使用 TerserPlugin/UglifyJsPlugin 的解决方案仅适用于 JavaScript 文件?
我使用以下正则表达式test: /\.html(\?.*)?$/i,
,但它仍然不起作用。
我运行的命令是$ npm run production
package.json 文件中的脚本部分:
"scripts": {
"production": "webpack --optimize-minimize --config production.config.js",
},
Webpack 生产配置文件 - production.config.js。
以下内容不会删除 HTML 注释
module: {
rules: [
{
test: /\.css$/,
use: [
// style-loader
{
loader: 'style-loader'
},
// css-loader
{
loader: 'css-loader',
options: {
modules: true
}
},
// sass-loader
{
loader: 'sass-loader'
}]
},
{
test: /\.html$/i,
use: ['file-loader?name=[name].[ext]', 'extract-loader', 'html-loader']
// use: [{
// loader: ['html-loader'],
// options: {
// minimize: true
// }
// }]
}
]
},
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
// https://github.com/webpack-contrib/terser-webpack-plugin#terseroption
test: /\.html(\?.*)?$/i,
//
// https://webpack.js.org/plugins/terser-webpack-plugin/#remove-comments
terserOptions: {
output: {
comments: false,
},
},
extractComments: false,
}),
],
},
解决方案
要在生产模式下删除 html 中的评论,您需要插件 HtmlWebpackPlugin,在 Minification 选项中放置 removeComments: true,或者像我的 isProd 标志
plugins: [
new HTMLWebpackPlugin({
template: './index.html',
inject: 'body',
minify: {
collapseWhitespace: isProd,
removeComments: isProd
}
}),
]
const isDev = process.env.NODE_ENV === 'development'
const isProd = !isDev
const optimization = () => {
const config ={
splitChunks: {
chunks: 'all'
}
}
if (isProd){
config.minimizer = [
new OptimizeCssAssetWebpackPlugin(),
new TerserWebpackPlugin({
terserOptions: {
output: {
comments: false,
},
},
}),
]
} return config
}
推荐阅读
- mongodb - 如何从 mongo 查询结果中的内部对象中获取值
- svelte - 反应性语句触发太频繁
- javascript - 获取 [object: Promise] 而不是值本身
- r - 将多列替换为一列
- python - 打印我存储的信息 - Python
- android - 在android的recyclerview中突出显示搜索文本
- grpc - 通道和存根上的 maxInboundMessageSize
- c++ - Node.js 原生插件:node_api.h 位于何处?
- azure - Azure - 将 Web 应用程序备份到网络保护存储
- wso2 - WSO2 IS - 从 IS 中删除用户时出现 POST_DELETE_USER 错误