webpack的打包配置

简介: webpack的打包配置

theme: fancy

highlight: a11y-light

Webpack 能够根据模块之间的依赖关系进行打包,实现多个模块的合并和优化,生成优化后的静态资源,支持两种模块导入语法

  • html-webpack-plugin 还可以将打包后的 JS、CSS 等静态资源自动注入到 HTML 文件中,不必手动更新引用路径
  • 图片小于nkb打包为base64格式,注意只有通过es模块引入才会打包,使用绝对路径不会被打包成base64格式
  • 在webpack设置路径别名例如@对应src
  • 跨域

  "proxy": {
   
    "/api": {
   
      "target": "http://localhost:3001"
    },
    "/github": {
   
      "target": "https://api.github.com",
      "pathRewrite": {
    "^/github": "" },
      "changeOrigin": true
    }
  }
  //根据前缀转发到不同的地址,注意前缀可能在接口中不存在,就要替换成空,如果地址就有前缀就不需要替换
  • 对应第三方包例如antd react,代码基本不会变,我们把这些代码拆分打包,使用splitChunks

  optimization: {
   
    splitChunks: {
   
      chunks: 'all',
      cacheGroups: {
   
        antd: {
   
          test: /[\/]node_modules[\/](antd)[\/]/,
          name: 'antd',
          priority: -10
        },
        reactDOM: {
   
          test: /[\/]node_modules[\/](react-dom)[\/]/,
          name: 'react-dom',
          priority: -10
        },
       vendor: {
   
          test: /[\/]node_modules[\/](react|react-dom|antd)[\/]/,
          name: "vendors",
          chunks: "all",
          priority: -10
       }//其他第三方统一打包
      }
    }
  }
  • 当然在生产环境下我们才需要使用splitChunks或其他插件,我们额外新建一个webpack.prod.config.js文件,使用merge
//webpack.prod.config.js
const webpack = require('webpack'); 
module.exports = 
        {
    
               optimization: {
   
            splitChunks: {
   
              chunks: 'all',
              cacheGroups: {
   
                antd: {
   
                  test: /[\/]node_modules[\/](antd)[\/]/,
                  name: 'antd',
                  priority: -10
                },
                reactDOM: {
   
                  test: /[\/]node_modules[\/](react-dom)[\/]/,
                  name: 'react-dom',
                  priority: -10
                },
               vendor: {
   
                  test: /[\/]node_modules[\/](react|react-dom|antd)[\/]/,
                  name: "vendors",
                  chunks: "all",
                  priority: -10
               }
              }
            }
          }
        };


//webpack.config.js
const path = require('path');
const webpack = require('webpack');
const {
    merge } = require('webpack-merge');

    const defaultConfig = {
   
      entry: './src/index.js',
      output: {
   
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'dist'),
      },
      module: {
   
        rules: [
          {
   
            test: /.js$/,
            exclude: /node_modules/,
            use: ['babel-loader'],
          },
        ],
      },
    };

    if (process.env.NODE_ENV === 'production') {
   
      const prodConfig = require('./webpack.prod.config');

      module.exports = merge(defaultConfig, prodConfig);
    } else {
   
      module.exports = defaultConfig;
    }
相关文章
|
17小时前
|
JavaScript 前端开发
webpack成长指北第9章---webpack如何对icon字体进行打包
webpack成长指北第9章---webpack如何对icon字体进行打包
40 1
|
17小时前
|
前端开发 JavaScript
webpack成长指北第7章---webpack的css\less\scss样式打包
webpack成长指北第7章---webpack的css\less\scss样式打包
44 0
|
17小时前
|
前端开发 JavaScript
webpack成长指北第8章---webpack的CSS Modules打包
webpack成长指北第8章---webpack的CSS Modules打包
23 0
|
17小时前
|
前端开发
【专栏】`webpack` 的 `DefinePlugin` 插件用于在编译时动态定义全局变量,实现环境变量差异化、配置参数动态化和条件编译
【4月更文挑战第29天】`webpack` 的 `DefinePlugin` 插件用于在编译时动态定义全局变量,实现环境变量差异化、配置参数动态化和条件编译。通过配置键值对,如 `ENV: JSON.stringify(process.env.NODE_ENV)`,可以在代码中根据环境执行相应逻辑。实际应用包括动态加载资源、动态配置接口地址和条件编译优化代码。注意变量定义的合法性和避免覆盖,解决变量未定义或值错误的问题,以提升开发效率和项目质量。
|
17小时前
|
缓存 JavaScript 前端开发
webpack学习笔记--基本配置
webpack学习笔记--基本配置
|
17小时前
|
前端开发 JavaScript 开发者
深入了解Webpack:前端模块打包工具
深入了解Webpack:前端模块打包工具
8 1
|
17小时前
|
JavaScript 前端开发
构建工具:配置Webpack打包Vue项目
【4月更文挑战第24天】本文介绍了如何配置Webpack来打包Vue项目。首先,Webpack作为模块打包器处理依赖并打包成可执行文件。接着,通过安装Node.js和npm,创建Vue项目,进入项目目录并配置Webpack的入口、输出、加载器和插件。最后,运行构建命令完成打包。理解Webpack基础并按需配置,能优化前端项目构建和开发体验。
|
17小时前
|
存储 前端开发 文件存储
webpack成长指北第5章---webpack的基础配置
webpack成长指北第5章---webpack的基础配置
27 0
|
17小时前
|
人工智能 移动开发 前端开发
【利用AI让知识体系化】Webpack 相关配置技巧(三)
【利用AI让知识体系化】Webpack 相关配置技巧
|
17小时前
|
人工智能 缓存 JavaScript
【利用AI让知识体系化】Webpack 相关配置技巧(二)
【利用AI让知识体系化】Webpack 相关配置技巧