JS tree shaking
生成环境下,会自动开启tree shaking,用来清除没有用到的js代码
c
{
mode: 'production',
}
CSS tree shaking
需要借助purgecss-webpack-plugin来清楚未用到的css。
一: 原生的css tree shaking
c
src/index.js
import './index.css'
const button = document.createElement('button')
button.style.width = '200px'
button.style.height = '200px'
button.innerText = '动态加载js'
button.addEventListener('click', () => {
import('./other.js').then(res => {
console.log('加载了js')
})
})
document.body.appendChild(button)
c
src/index.css
.addd {
color: pink;
}
.unused2 {
color: blue;
}
c
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
Document
<div class="addd">dddd</div>
</body>
</html>
c
webpack.config.js
const HtmlWebpackPlugin = require('html-webpack-plugin');
const { PurgeCSSPlugin } = require("purgecss-webpack-plugin");
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const path = require('path');
const glob = require('glob');
module.exports = {
entry: './src/index.js',
output: {
filename: 'main.js',
},
mode: 'development',
module: {
rules: [
{
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader,
'css-loader'
]
},
]
},
plugins: [
new MiniCssExtractPlugin(),
new PurgeCSSPlugin({
// 用来告诉PurgeCSS哪些文件可能包含CSS类名的引用
paths: glob.sync(path.join(__dirname, 'index.html')), // 匹配所有 .vue 和 .js 文件
}),
new HtmlWebpackPlugin({
template: './index.html',
}),
]
}
二: vue的css tree shaking
不借助vue-cli怎么做到移除单文件里面未用的css类名? 有空再探讨