总结、css相关的
1、style-loader 是将 css 以 style 的形式写在页面
2、MiniCssExtractPlugin 可以将 css 从js中分离出来,以 link 的形式引入
3、css 的压缩 看下面
css 的压缩有两款插件
css-minimizer-webpack-plugin(官方推荐) 和 optimize-css-assets-webpack-plugin
css-minimizer-webpack-plugin 该插件使用cssnano优化和缩小CSS。
就像optimize-css-assets-webpack-plugin一样,但是使用查询字符串对源映射和资产更准确时,它可以缓存并在并行模式下工作。
所以我这里选择了官方
1、安装
npm install css-minimizer-webpack-plugin --save-dev
2、配置 webpack.config.js
头部引入插件
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
module 同级下增加插件的配置
const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); module.exports = { module: { loaders: [ { test: /.s?css$/, use: [MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader'], }, ], }, optimization: { minimize: true, minimizer: [ // For webpack@5 you can use the `...` syntax to extend existing minimizers (i.e. `terser-webpack-plugin`), uncomment the next line // `...` new CssMinimizerPlugin(), ], }, };
这将仅在生产模式下启用CSS优化。如果要在开发中也运行它,请将optimization.minimize选项设置为true。
最终结果

全部代码
const { resolve } = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); //设置 nodejs 中的环境变量, 默认为 production 开发环境 // process.env.NODE_ENV = 'development'; module.exports = { entry: './src/js/index.js', output: { filename: 'js/bundle.js', path: resolve(__dirname, 'dist') }, module: { rules: [ { test: /\.css$/, use: [ MiniCssExtractPlugin.loader, 'css-loader', // 使用loader的默认配置 // 'postcss-loader', // 修改loader的配置 { loader: "postcss-loader", options: { postcssOptions: { plugins: [ [ "postcss-preset-env" ], ], }, }, } ] } ] }, plugins: [ new HtmlWebpackPlugin({ template: './src/index.html' }), new MiniCssExtractPlugin({ filename: 'css/built.css' }) ], optimization: { minimize: true, minimizer: [ // For webpack@5 you can use the `...` syntax to extend existing minimizers (i.e. `terser-webpack-plugin`), uncomment the next line // `...` new CssMinimizerPlugin(), ], }, mode: 'development', devServer: { contentBase: resolve(__dirname, 'dist'), //开启 gzip 压缩 compress: true, port: 8086, open: true } };
人生很漫长,或许我只是你人生中微不足道的一小段,只是你人生中的惊鸿一瞥。
浙公网安备 33010602011771号