美文网首页
Webpack基础

Webpack基础

作者: 綪比纸薄 | 来源:发表于2020-04-21 13:26 被阅读0次

    五个核心概念

    1 Entry: 入口,指示webpack以哪个入口文件为起点开始打包, 分析构建内部依赖图
    2 Output: 输出,指示webpack打包后的资源bundles输出到哪个目录以及如何命名
    3 Loader: 匹配各种类型文件, 设置如何处理文件
    4 Plugins: 插件, 可以用于执行范围更广的任务, 插件的范围包括从打包到优化和压缩,一直到重新定义环境中的变量等.
    5 Model: 模式 指示webpack 使用相应的模式的配置(development, production)

    运行指令

    webpack ./src/index.js -o ./build/build.js --model=development // 开发环境
    webpack ./src/index.js -o ./build/build.js --model=production  // 生产环境
    // ./src/index.js 打包入口
    // -o 指定输出目录 为 ./build/build.js 
    // --model 指定开发环境
    // 生产环境比开发环境多了个代码压缩
    

    配置文件

    webpack.config.js
    运行webpack时会加载此文件中的配置
    所有构建工具基于NodeJs平台进行, 模块化默认采用commonJs

    const { resolve } = require('path')  // resolve 用来拼接绝对路径的方法
    const HtmlWebpackPlugin = require('html-webpack-plugin')
    module.exports = { // 暴露出一个对象
      entry: './src/index.js',
      output: {
        filename: 'build.js',
        path: resolve(__dirname, 'build')  // __dirname nodejs 的变量, 代表当前目录的绝对路径
      },
      // loader 配置
      module: {
        rules: [
          // 详细loader配置
          {
            // 匹配文件 正则
            test: /\.css$/,
            // 使用哪些loader处理
            use: [
              // 从下到上,从右到左执行
              'style-loader',
              'css-loader'
            ]
          },
          {
            // 匹配文件 正则
            test: /\.less$/,
            // 使用哪些loader处理
            use: [
              // 从下到上,从右到左执行
              'style-loader',
              'css-loader',
              'less-loader'
            ]
          },
          {
            // 匹配文件 正则
            test: /\.(jpg|png|gif)$/,
            // 使用哪些loader处理
            // 依赖 url-loader file-loader
            loader: 'url-loader',
            options: {
              // 如果图片小于8kb 转换为base64
              limit: 8 * 1024,
              // url-loader 默认使用es模块化解析, 而html-loader引入图片是commonjs
              // 使用html-loader处理html图片引入时会出错[Object Module]
              // 解决 关闭url-loader es6的模块化 使用commonjs解析
              esModule: false,
              // 图片名称 [hash: 10] 去hash的前10位 [ext] 原来的扩展名
              name: '[hash:10].[ext]',
              outputPath: 'images'
            },
            {
              test: /\.html$/,
              // 处理html引入图片
              use: 'html-loader'
            },
            {
              // 排除文件
              exclude: /\.(html|js|css)$/,
              // 处理html引入图片
              loader: 'file-loader'
            }
          }
        ]
      },
      // plugin 配置
      plugins: [
        // html-webpack-plugin
        // 功能: 默认创建一个空的html文件, 自动引入打包的所有资源(JS/CSS)
        HtmlWebpackPlugin({
          // 根据一个模板生成文件
          template: './src/index.html'
        })
      ]
      // 模式
      mode: 'development'  // 开发模式
      // mode: 'development'
      // dev-serve 开发服务器 devServer: 用来自动化 (自动编译, 打包, 打开浏览器,自动刷新浏览器)
      // 启动指令 npx webpack-dev-server
      devServer: {
        contentBase: resolve(__dirname, 'build'),
        // 启动Gzip压缩
        compress: true,
        // 端口号
        port: 3000,
        // 自动打开浏览器
        open: true
      }
    }
    

    相关文章

      网友评论

          本文标题:Webpack基础

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