当先锋百科网

首页 1 2 3 4 5 6 7
// 用来拼接绝对路径
const {resolve} = require('path');

const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  // 五个核心
  // 1. 入口文件
  entry: './src/main.js',

  // 2. 出口
  output: {
    filename: 'static/js/main.js', // 出口文件名,这样可以让js在js文件夹下
    // filename: 'main.js', // 出口文件名
    path: resolve(__dirname, 'dist'), // 出口路径
    clean: true // 自动清空上次打包的内容
  },

  // 3. loader的配置
  module: {
    rules: [
      // 详细的loader配置
      {
        test: /\.css$/, // 正则,匹配以.css结尾的文件
        use: [
          // loader执行顺序从下往上
          'style-loader', // 创建style标签,将js中的样式资源插入进去,添加到head中生效
          'css-loader' // 将css文件变成commonjs模块加载到js中,里边内容是样式字符串
        ]
      },
      {
        test: /\.(jpg|png)$/,
        type: 'asset',
        // 这样可以让图片在images文件夹下
        generator: {
          filename: 'static/images/[hash:10][ext][query]'
        }
      },
      {
        test: /\.(ttf|woff|woff2)$/,
        type: 'asset/resource',
        // 这样可以让字体图标在fonts文件夹下
        generator: {
          filename: 'static/fonts/[hash:10][ext][query]'
        }
      }
    ]
  },

  // 4. plugins的配置
  plugins: [
    // 打包后创建一个空的html文件(以./src/index.html为模板),会引入打包后的css,js等
    new HtmlWebpackPlugin({
      template: './public/index.html'
    })
  ],

  // 5. 模式
  mode: 'development'
}

// 打包命令
webpack ./src/main.js -o ./dist/main.js --mode=development