版权声明:本文为博主原创文章,未经博主允许不得转载。
原理
本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器。由于 webpack 不支持以.js意外的文件,loader 可以将所有类型的文件转换为 webpack 能够处理的有效模块,然后你就可以利用 webpack 的打包能力,对它们进行处理。plugin用于扩展了 webpack 的功能,插件的范围包括,从打包优化和压缩,一直到重新定义环境中的变量。
功能
- 依赖管理:让模块更容易的被复用,避免全局引入的冲突,避免重复导入或加载不需要的模块
- 合并代码:把各个分散的模块打包成一个文件,减少HTTP的请求数量
- 文件压缩:代码和图片压缩减少体积,字节数小的图片文件可被编译成base64直接插入文件中
- 各路插件:babel插件将ES6转译成ES5
构建的过程
- 解析配置参数:合并shell和webpack.config.js文件中的配置信息,输出最终的配置信息
- 注册配置插件:好让插件监听webpack生命周期的事件节点,做出对应的反应
- 解析entry入口:找出每个文件中所有的文件,从而递归下去
- loader解析:在递归的每个文件中,找出对应的loader进行解析。递归结束后,得到最终的chunk
- chunk输出:输出chunk到文件系统