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;
    }
相关文章
|
13天前
|
JavaScript 前端开发 CDN
webpack打包发布~
【8月更文挑战第7天】
25 1
|
5天前
|
前端开发 开发者
在前端开发中,webpack 作为模块打包工具,其 DefinePlugin 插件可在编译时动态定义全局变量,支持环境变量定义、配置参数动态化及条件编译等功能。
在前端开发中,webpack 作为模块打包工具,其 DefinePlugin 插件可在编译时动态定义全局变量,支持环境变量定义、配置参数动态化及条件编译等功能。本文阐述 DefinePlugin 的原理、用法及案例,包括安装配置、具体示例(如动态加载资源、配置接口地址)和注意事项,帮助开发者更好地利用此插件优化项目。
12 0
|
7天前
webpack——打包去除console
webpack——打包去除console
11 0
|
1月前
|
JSON 前端开发 JavaScript
前端工程化:Webpack配置全攻略
【7月更文挑战第14天】
37 6
|
1月前
|
缓存 JSON 前端开发
Webpack打包优化实践
【7月更文挑战第17天】Webpack的打包优化是一个持续的过程,需要开发者根据项目的实际情况选择合适的优化策略。通过拆分代码、压缩代码、使用Tree Shaking、优化加载器配置、利用缓存以及进行性能分析,我们可以有效提升Webpack的打包效率和应用的加载
|
1月前
|
JSON 缓存 前端开发
前端工程化:Webpack配置全攻略
【7月更文挑战第18天】
26 1
|
2月前
|
缓存 JavaScript
webpack配置中的3种hash值
webpack配置中的3种hash值
|
2月前
|
缓存 前端开发 JavaScript
Webpack作为模块打包器,为前端项目提供了高度灵活和可配置的构建流程
【6月更文挑战第12天】本文探讨了优化TypeScript与Webpack构建性能的策略。理解Webpack的解析、构建和生成阶段是关键。优化包括:调整tsconfig.json(如关闭不必要的类型检查)和webpack.config.js选项,启用Webpack缓存,实现增量构建,代码拆分和懒加载。这些方法能提升构建速度,提高开发效率。
46 3
|
1月前
|
JavaScript
vue 配置【详解】 vue.config.js ( 含 webpack 配置 )
vue 配置【详解】 vue.config.js ( 含 webpack 配置 )
28 0
|
3月前
|
缓存 JavaScript 前端开发
webpack学习笔记--基本配置
webpack学习笔记--基本配置