В моей текущей установке веб-пакет объединяет css, который был импортирован в файлы .js, в отдельный файл стилей и загружает его после после завершения загрузки пакета .js.Поскольку пакет .js загружается после html (конец тега / body), изначально на странице нет стиля.
Текущая настройка веб-пакета:
module.exports = {
entry: './client/index.js',
plugins: [
new HtmlWebpackPlugin({
template: 'client/index.html',
minify: true,
}),
new CleanWebpackPlugin(['dist']),
],
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'dist'),
publicPath: '/',
},
module: {
rules: [{
use: 'babel-loader',
test: /\.js$/,
exclude: /node_modules/,
},
{
use: ['style-loader', 'css-loader'],
test: /\.css$/,
},
{
test: /\.scss$/,
use: [{
loader: 'style-loader',
},
{
loader: 'css-loader',
options: {
sourceMap: true,
},
},
{
loader: 'sass-loader',
options: {
sourceMap: true,
},
},
],
},
{
test: /\.(png|svg|jpg|gif)$/,
use: ['file-loader'],
},
],
},
};
module.exports = merge(common, {
mode: 'production',
optimization: {
minimizer: [
new UglifyJsPlugin({
cache: true,
parallel: true,
sourceMap: true, // set to true if you want JS source maps
}),
new OptimizeCSSAssetsPlugin({}),
],
splitChunks: {
cacheGroups: {
styles: {
name: 'styles',
test: /\.css$/,
chunks: 'all',
enforce: true,
}
}
}
},
plugins: [
new UglifyJsPlugin({
cache: true,
parallel: true,
}),
new MiniCssExtractPlugin({
filename: "[name].[contenthash].css",
chunkFilename: "[id].[contenthash].css",
}),
],
module: {
rules: [{
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader,
"css-loader",
]
}]
},
});
В идеале хотелось бы добавитьотдельный тег в заголовке html, куда будет загружен связанный css-файл.Я не нашел такой опции ни в параметрах HtmlWebpackPlugin, ни в параметрах MiniCssExtractPlugin.Вы знаете, как это сделать?