在添加插件之前,一切正常,没有任何错误(优化器、最小化器等)。然后,我安装了 html-critical-webpack-plugin 以便在 html 中内联关键 css 并延迟非关键 css,终端中也没有错误。但是,输出是一个完全独立的 html 文件,仅包含关键/非关键 css,没有任何 index.js 导入。
有谁知道如何将此插件与其余设置结合使用?
webpack.prod.js
const path = require("path");
const common = require("./webpack.common.js");
const { merge } = require("webpack-merge");
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const OptimizeCssAssetsPlugin = require("optimize-css-assets-webpack-plugin");
const TerserPlugin = require("terser-webpack-plugin");
var HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const HtmlCriticalWebpackPlugin = require("html-critical-webpack-plugin");
module.exports = merge(common,{
mode: "production",
output: {
filename: "main.[contentHash].js",
path: path.resolve(__dirname, "prod"),
},
optimization: {
minimizer: [
new OptimizeCssAssetsPlugin(),
new TerserPlugin(),
new HtmlWebpackPlugin({
filename: 'index.html',
template: './src/template.html',
minify: {
removeAttributeQuotes: true,
collapseWhitespace: true,
removeComments: true
}
}),
new HtmlWebpackPlugin({
filename: 'contactform.html',
template: './src/contactform.html',
minify: {
removeAttributeQuotes: true,
collapseWhitespace: true,
removeComments: true
}
})
]
},
plugins: [
new MiniCssExtractPlugin({filename: "[name].[contentHash].css"}),
new HtmlCriticalWebpackPlugin({
base: path.resolve(__dirname, 'src'),
src: 'template.html',
dest: '../prod/index.html',
inline: true,
minify: true,
extract: true,
penthouse: {
blockJSRequests: false,
}
}),
new CleanWebpackPlugin(),
],
module: {
rules: [
{
test: /\.css$/,
use: [MiniCssExtractPlugin.loader, "css-loader"], //order matter. also the one with the highest index loads first. in this case css-loader
},
]
}
});
index.js
import './css/normalize.css';
import './css/main.css';
import './css/navigation.css';
import './css/about.css';
import './css/work.css';
import './css/testimonials.css';
import './css/work.css';
import './css/contact.css';
import './css/small-devices.css';
import './css/global-animation.css';
import './js/main.js';
import './js/jquery.js';