当前位置: 首页 > web >正文

webpack开发模式与生产模式(webpack --mode=development/production“, )

webpack开发模式与生产模式的区别

webpack的development(开发模式)和production(生产模式)是两种常见的构建环境配置,主要区别体现在构建速度、代码优化和调试支持等方面。

开发模式 (development)

  • 目标:注重开发效率和调试体验。
  • 特性
    • 不压缩代码,保留源代码格式和注释。
    • 启用evalsource-map生成完整的source map,便于调试。
    • 保留process.env.NODE_ENV'development',供库和框架识别环境。
    • 启用HMR(模块热替换)和更快的构建速度。

生产模式 (production)

  • 目标:优化代码体积和性能。
  • 特性
    • 启用代码压缩(如TerserPlugin)、Tree Shaking和Scope Hoisting。
    • 生成轻量级source map或不生成(根据配置)。
    • 设置process.env.NODE_ENV'production',触发库的优化逻辑(如React移除PropTypes)。
    • 拆分代码(Code Splitting)和缓存优化(文件名哈希)。

如何配置模式

在webpack配置文件中通过mode字段直接指定:

// webpack.config.js
module.exports = {mode: 'development', // 或 'production'// 其他配置...
};

或通过命令行参数传递:

webpack --mode=production

注意事项

  • 环境变量:可通过webpack.DefinePlugin自定义全局变量,例如:
    new webpack.DefinePlugin({'process.env.API_URL': JSON.stringify('https://dev.example.com'),
    });
    

  • 覆盖默认优化:生产模式下webpack会自动启用优化插件,如需调整,可通过optimization字段覆盖:
    optimization: {minimize: false, // 禁用压缩(不推荐)splitChunks: { chunks: 'all' }, // 自定义代码拆分
    }
    

  • 开发工具:开发模式下推荐使用webpack-dev-serverwebpack-hot-middleware实现实时重载。

扩展:区分环境的配置

可使用webpack-merge拆分不同环境的配置:

  1. 创建通用配置(webpack.common.js)。
  2. 开发配置(webpack.dev.js)合并通用配置并添加开发插件(如HotModuleReplacementPlugin)。
  3. 生产配置(webpack.prod.js)合并通用配置并添加优化插件(如MiniCssExtractPlugin)。

通过--config指定配置文件:

webpack --config webpack.prod.js
"build": "webpack --mode=production",
"dev": "webpack serve --mode=development"

http://www.xdnf.cn/news/18610.html

相关文章:

  • ubuntu使用fstab挂载USB设备(移动硬盘)
  • Jenkins用户授权管理 企业级jenkins授权策略 jenkins用户权限分配
  • 【go语言】使用Wails开发一款现代化文本编辑器 - 从0到1的实践指南
  • 机器学习之线性回归:原理、实现与实践
  • 动态代理保姆级别
  • 移动应用青少年模式开发成本解析:原生、Flutter与Uniapp方案对比-优雅草卓伊凡
  • Slither 审计自己写的智能合约
  • MySQL InnoDB记录存储结构深度解析
  • 服务发现实例和服务实例是不同的
  • reactive 核心要点
  • Unreal Engine UPrimitiveComponent
  • 数据分析编程第二步: 最简单的数据分析尝试
  • day58 拓扑排序 (kama117. 软件构建) dijkstra(朴素版)(kama47. 参加科学大会)
  • 无人机电机与螺旋桨的匹配原理及方法(一)
  • JavaSSM框架从入门到精通!第三天(MyBatis(二))!
  • Python训练营打卡Day40-简单CNN
  • 【51单片机数码管字符左移】2022-11-11
  • 如何低门槛自制Zigbee 3.0温湿度计?涂鸦上新开发包,开箱即用、完全开源
  • 开源AI编程工具Kilo Code的深度分析:与Cline和Roo Code的全面对比
  • Tiger任务管理系统-13
  • 【jar包启动,每天生成一个日志文件】
  • Unity UnityWebRequest高级操作
  • Ubuntu部署K8S集群
  • Jmeter+Jenkins接口压力测试持续集成
  • 【motion】基于标签重合度的匹配算法1:原理
  • 3D打印小批量低成本打印玩具工艺品模型-中科米堆CASAIM
  • 字节Seed-OSS开源,不卷参数卷脑子
  • 从零开始搭 Linux 环境:VMware 下 CentOS 7 的安装与配置全流程(附图解)
  • 如何修复“DNS服务器未响应”错误
  • AP服务发现PRS_SOMEIPSD_00160的解析