美文网首页
Webpack 5(十)配置实例

Webpack 5(十)配置实例

作者: _于曼丽_ | 来源:发表于2023-10-20 08:53 被阅读0次

    package.json

    {
      "name": "demo15",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "start": "webpack serve --open --config webpack.dev.js",
        "build": "webpack --config webpack.prod.js"
      },
      "keywords": [],
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "css-loader": "^6.7.1",
        "html-webpack-plugin": "^5.5.0",
        "mini-css-extract-plugin": "^2.6.0",
        "style-loader": "^3.3.1",
        "webpack": "^5.72.0",
        "webpack-cli": "^4.9.2",
        "webpack-dev-server": "^4.8.1",
        "webpack-merge": "^5.8.0"
      }
    }
    

    webpack.common.js

    const path = require('path')
    const HtmlWebpackPlugin = require('html-webpack-plugin')
    
    module.exports = {
      entry: {
        app: './src/app.js'
      },
      output: {
        filename: '[name].bundle.js',
        chunkFilename: '[name].chunk.js',
        path: path.resolve(__dirname, 'dist'),
        clean: true
      },
      module: {
        rules: [
          {
            test: /\.(png|svg|jpg|jpeg|gif)$/i,
            type: 'asset/resource'
          },
          {
            test: /\.(woff|woff2|eot|ttf|otf)$/i,
            type: 'asset/resource'
          }
        ]
      },
      plugins: [
        new HtmlWebpackPlugin({
          title: 'Production'
        })
      ],
      optimization: {
        runtimeChunk: 'single',
        splitChunks: {
          cacheGroups: {
            vendor: {
              chunks: 'all',
              test: /[\\/]node_modules[\\/]/,
              name: 'vendor'
            }
          }
        }
      }
    }
    

    webpack.prod.js

    const { merge } = require('webpack-merge')
    const common = require('./webpack.common.js')
    const MiniCssExtractPlugin = require('mini-css-extract-plugin')
    
    module.exports = merge(common, {
      mode: 'production',
      module: {
        rules: [
          {
            test: /\.css$/,
            use: [MiniCssExtractPlugin.loader, 'css-loader']
          }
        ]
      },
      plugins: [
        new MiniCssExtractPlugin()
      ]
    })
    

    webpack.dev.js

    const { merge } = require('webpack-merge')
    const common = require('./webpack.common.js')
    
    module.exports = merge(common, {
      mode: 'development',
      devtool: 'eval-source-map',
      devServer: {
        hot: true,
        historyApiFallback: true,
        client: {
          overlay: true
        }
      },
      module: {
        rules: [
          {
            test: /\.css$/,
            use: ['style-loader', 'css-loader']
          }
        ]
      }
    })
    

    相关文章

      网友评论

          本文标题:Webpack 5(十)配置实例

          本文链接:https://www.haomeiwen.com/subject/ofrhidtx.html