Webpack 生产环境优化

生产环境和开发环境有很大的差异,生产环境只注重运行效率,开发环境主要开发效率,webpack4.0开始提出了(mode)模式的概念

针对不同的环境进行不同的配置,为不同的工作环境创建不同的配置。

Webpack不同环境下的不同配置,主要有两种形式:

1.配置文件根据环境不同导出不同配置 主要通过if判断的形式,这种配置方式只适用于中小型项目

2.一个环境对应一个配置文件 (多文件配置) 主要适用于一些大型项目 因为配置文件较多

一般来说有三个配置文件 一个开发环境配置文件 一个生产环境配置文件 一个公共文件抽象开发生共同的配置可以把一些处理依赖的

项放到公共配置中比如一些loader等。

举例写下一个简单的生产环境配置文件

Webpack DefinePlugin

为代码注入全局成员,在生产环境中 这个插件就会启用起来,在代码中注入了一个process.env.NODE_ENV常量通常用于判断当前的

运行环境,从而决定是否更改一些操作。

Webpack Tree-shaking及concatenateModules

Tree-shaking 能够检测出生产环境中未引用部分,并且清除掉,提升性能,并不是webpack中的某一个配置选项,一组功能搭配使用后

的优化效果,生产模式下自动启动不是手动模式中,我们可以手动实现配置达到tree shaking效果,并且可以使用concatenateModules

将打包之后的模块合并到同一个函数中,提升运行效率,减少代码体积

Webpack Tree Shaking 与 babel

使用Tree Sharking的前提是ES Modules,也就是说Webpack打包的代码必须使用ESM,但是当我们处理代码时一般会用到babel-loader

处理成CommonJS,按理说这时候Tree Sharking将失效,实际上最新版本的babel-loader已经给我们关闭了es modules插件,所以说web-

pack打包时还是ES module的代码。

Webpack代码分割

webpack中所有的代码最终都被打包到一起,这样打包的bundle体积过大,但是并不是每个模块再启动时都是必要的,所以分包,按需加载

这些模块,加大运行效率,提升性能。所以webpack有了代码分包的功能。

目前分包的机制有2种:

1.多入口打包

2.webpack动态导入功能

需要用到某个模块时,再加载这个模块,所有导入的模块会被自动分包

Webpack MiniCssExtractPlugin

功能是把css提取出来并压缩

yarn add mini-css-extract-plugin --dev

Webpack  Hash

生产模式下,文件名使用Hash,一旦我们资源发生改变我们资源名称也可以一起去变化,对于客户端全新的文件名也就是全新的请求,

也就没有了缓存的问题

webpack支持三种hash,效果各不相同

1.filename:[name]-[hash].bundle.js 这种hash只要是项目中任何一个地方发生改动,这次打包的hash值都会发生变化。

2.filename:[name]=[chunkhash].bundle.js //文件发生变化 对应那个文件同一路的js和css,hash都会发生变化并且对应的hash值为同一

个,对应的主入口文件也会被动发生变化。

3.filename:[name]=[contenthash].bundle.js //不同的文件 不同的hash 没有同一路的说法,哪个文件改变 哪个文件对应的hash改变。

浅谈Webpack模块打包工具四的更多相关文章

  1. 浅谈Webpack模块打包工具一

    为什么要使用模块打包工具 1.模块化开发ES Modules存在兼容性问题 打包之后成产阶段编译为ES5 解决兼容性问题 2.模块文件过多 网络请求频繁  开发阶段把散的模块打包成一个模块 解决网络请 ...

  2. 浅谈Webpack模块打包工具三

    Source Map 生产代码与开发代码完全不同,如果需要调试应用的话会非常的麻烦,错误信息无法定位,Soutce Map就会逆向得到源代码, 须在打包之后的代码文件的末尾位置例如添加//# sour ...

  3. 浅谈Webpack模块打包工具二

    Webpack插件机制介绍 Loader专注实现资源模块加载,plugin解决其他自动化工作,比如清除dist目录,拷贝静态文件值输出目录,压缩输出代码等,下面列举几个plugin 的例子. Webp ...

  4. 浅谈webpack优化

    webpack优化方案 1. 优化开发体验 1-1. 加快构建速度 ① 缩小文件搜索范围 由于 Loader 对文件的转换操作很耗时,需要让尽可能少的文件被 Loader 处理,用include和ex ...

  5. 模块打包工具webpack

    1.webpack的安装 1.1在安装node的基础上,npm install -g webpack(window版本,因为是全局安装,所以无所谓是哪个路径下) 1.2新建一个文件夹用于此项目  eg ...

  6. Webpack, 现在最流行的模块打包工具.压缩打包

    压缩bundle.js 1.把我们项目的代码从es6 -> es5 [babel] 参考:http://babeljs.io/docs/setup/#installation 1.1.安装包 b ...

  7. Webpack前端打包工具

    一.安装 安装Webpack之前需要安装nodejs,然后用npm安装: $ npm install webpack -g &nsbp;运行以上命令就将Webpack安装到了全局环境中.  但 ...

  8. 浅谈maven自动化构建工具

    转载https://blog.csdn.net/zxm1306192988/article/details/76209062 Maven是什么[what] 1.Maven 是 Apache 软件基金会 ...

  9. webpack模块打包简易版

    webpack基本使用流程(react) 1.安装webpack脚手架 cnpm install webpack webpack-cli -D 2.安装处理css的loader cnpm instal ...

随机推荐

  1. ORA-00245 control file backup operation failed 分析和解决

    一.问题说明 操作系统: RedHat 5.8 数据库: 11.2.0.3 2节点RAC. 使用RMAN 备份的时候,报如下错误: ORA-00245: control file backup fai ...

  2. 痞子衡嵌入式:MCUBootFlasher v3.0发布,为真实的产线操作场景而生

    -- 痞子衡维护的NXP-MCUBootFlasher工具(以前叫RT-Flash)距离上一个版本(v2.0.0)发布过去一年半以上了,这一次痞子衡为大家带来了全新版本v3.0.0,从这个版本开始,N ...

  3. 2V升3V芯片,输入2V输出3V可达1A

    PW5328B是一个恒定频率, 6引脚 SOT23电流模式升压转换器,用于小型低功耗应用. PW5328B的开关频率为 1.2MHz,允许使用微小的.低成本的电容器和电感器.内部软启动导致小涌流和延长 ...

  4. EntityFramework Core如何映射动态模型?

    前言 本文我们来探讨下映射动态模型的几种方式,相信一部分童鞋项目有这样的需求,比如每天/每小时等生成一张表,此种动态模型映射非常常见,经我摸索,这里给出每一步详细思路,希望能帮助到没有任何头绪的童鞋, ...

  5. JavaScript小记

    JavaScript小记 1. 简介 1. 语言描述 JavaScript 是一门跨平台.面向对象的弱类型动态脚本编程语言 JavaScript 是一门基于原型.函数先行的语言 JavaScript ...

  6. 阿里 Mock 工具正式开源,干掉市面上所有 Mock 工具!

    最近栈长注意到阿里开源了自家的 Mock 工具:TestableMock,该工具号称最轻量.简单.舒适的 Mock 测试工具,功能十分强大,媲美 PowerMock,用法比 Mockito 还要简洁, ...

  7. mdns

    mdns mdns_百度百科 https://baike.baidu.com/item/mdns 在计算机网络中 , 多播DNS ( mDNS )协议将主机名解析为不包含本地名称服务器的小型网络中的I ...

  8. apache httpclient 4 范例

    下面是一个通过apache httpclient 4 实现http/https的普通访问和BasicAuth认证访问的例子.依赖的第三方库为: 下面是具体实现: package test; impor ...

  9. JAXB学习(二): 对JAXB支持的主要注解的说明

    我们在上一篇中对JAXB有了一个大致的认识,现在我们来了解JAXB的一些主要注解. 顶层元素:XmlRootElement 表示整个XML文档的类应该使用XmlRootElement修饰,其实就像之前 ...

  10. 从零开始学Java (一)环境配置

    1.下载jdk Oracle官网 2.配置环境变量 JAVA_HOME:指明JDK安装路径,如C:\Program Files\Java\jdk1.7.0Path:变量中添加 %JAVA_HOME%\ ...