Webpack (三) -- plugins
Webpack (三) -- plugins
plugins
用于以各种方式自定义 webpack 的构建过程,和 loader 无法实现的一些事情
👇 官方例子
var webpack = require('webpack')
// 导入非 webpack 自带默认插件
var ExtractTextPlugin = require('extract-text-webpack-plugin')
var DashboardPlugin = require('webpack-dashboard/plugin')
// 在配置中添加插件
plugins: [
// 构建优化插件
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
filename: 'vendor-[hash].min.js',
}),
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false,
drop_console: false,
},
}),
new ExtractTextPlugin({
filename: 'build.min.css',
allChunks: true,
}),
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
// 编译时(compile time)插件
new webpack.DefinePlugin({
'process.env.NODE_ENV': '"production"',
}),
// webpack-dev-server 强化插件
new DashboardPlugin(),
new webpack.HotModuleReplacementPlugin(),
]
剖析
webpack 插件是一个具有 apply 属性的 JavaScript 对象
用法
在 webpack 配置中传递 plugins 实例
HtmlWebpackPlugins: 简单创建 HTML 文件,用于服务器访问,包含所有的 bundle,不需要在 html 中手动引用
CleanPlugins (import { CleanPlugins } from webpack): 清理 dist(打包文件夹)
🚀 webpack.config.ts 配置
import HtmlWebpackPlugin from 'html-webpack-plugin'
import path from 'path'
import webpack, { CleanPlugin } from 'webpack'
const config: webpack.Configuration = {
entry: {
main: './src/index.js',
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
},
module: {
rules: [
{
test: /\.css/,
use: [{ loader: 'style-loader' }, { loader: 'css-loader' }],
},
{ test: /\.ts/, use: 'ts-loader' },
{ test: /\.(png|svg|jpg|gif)$/, use: ['file-loader'] },
],
},
plugins: [
new CleanPlugin(),
new HtmlWebpackPlugin({
title: 'output managment',
}),
],
}
export default config
浙公网安备 33010602011771号