Webpack生产环境CSS优化
提取CSS成单独文件
//引入path来解决output参数绝对路径的配置
const { resolve } = require('path');
//引入入html-webpack-plugin插件,下载指令:npm i html-webpack-plugin[@指定版本号] -D
const HtmlWebpackPlugin = require('html-webpack-plugin');
//引入mini-css-extract-plgin插件,下载指令: npm i mini-css-extract-plgin[@指定版本号] -D
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
module.exports = {
//入口文件指定位置
entry: './src/js/index.js',
output: {
//输出文件指定位置和文件名
filename: 'js/built.js',
//输出目录
path: resolve(__dirname, 'build')
},
module: {
rules: [
{
test: /\.css$/,
use: [
// 创建style标签,将样式放入
// 'style-loader',
// MiniCssExtractPlugin将loader取代style-loader。作用:提取js中的css成单独文件
MiniCssExtractPlugin.loader,
// 将css文件整合到js文件中
'css-loader'
]
}
]
},
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html'
}),
new MiniCssExtractPlugin({
// 对输出的css文件进行重命名
filename: 'css/built.css'
})
],
//模式指定为开发环境:此时代码没有进行压缩,方便查看代码
mode: 'development'
};
CSS兼容性处理
// 设置nodejs环境变量,激发开发环境
// process.env.NODE_ENV = 'development';
//下载相关的loader指令:npm postcss-loader postcss-preset-env -D
module: {
rules: [
{
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader,
'css-loader',
/*
css兼容性处理:postcss --> postcss-loader postcss-preset-env,这些插件是帮postcss找到package.json中browserslist里面的配置,通过配置加载指定的css兼容性样式
//这个是写在package.json中的
"browserslist": {
// 开发环境 --> 设置node环境变量:process.env.NODE_ENV = development
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
],
// 生产环境:默认是看生产环境
"production": [
">0.2%",
"not dead",
"not op_mini all"
]
}
*/
// 使用loader的默认配置
// 'postcss-loader',
// 修改loader的配置
{
loader: 'postcss-loader',
options: {
ident: 'postcss',
plugins: () => [
// postcss的插件
require('postcss-preset-env')()
]
}
}
]
}
]
},
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html'
}),
new MiniCssExtractPlugin({
filename: 'css/built.css'
})
],
压缩CSS
// 压缩使用的插件:npm i optimize-css-assets-webpack-plugin -D
//引用
const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin')
plugins: [
// 压缩css,只用使用就可以进行压缩了,不用再进行其他配置
new OptimizeCssAssetsWebpackPlugin()
],