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
posted @ 2021-07-07 23:12  wangzx1973  阅读(165)  评论(0)    收藏  举报