webpack是一个模块化打包工具,主要作用就是将多个模块打包为一个文件或多个文件,具体流程如下:
- 解析配置文件:从配置文件中读取相关的设置,如入口文件、输出目录、插件等。
- 解析入口模块:从配置文件指定的入口文件进行解析,找到所有的依赖模块,构建依赖图谱。
- 加载模块:根据依赖图谱加载每个模块。
- 编译模块:Webpack 在加载完每个模块后会进行编译,包括将模块转换为 JavaScript 代码、对样式和图片进行处理等。
- 输出资源:Webpack 将编译后的模块输出到指定的目录中,生成对应的文件,如 JavaScript 文件、CSS 文件等。
- 执行插件:在输出资源的过程中,Webpack 可以根据配置对输出的资源进行处理,比如压缩 JavaScript 和 CSS,提取公共代码等。
- 统计信息:Webpack 最后会生成一份构建统计信息,包括构建完成的时间、编译耗时、生成的文件名等。
在 Webpack 中,loader 和 plugin 是两个非常重要的概念。
- Loader 是用于对模块源代码进行转换的转换器,可以将不同类型的资源文件(如.js、.css、.less、.sass、.png、.jpg等)转换为 webpack 能够识别和打包的有效模块。Webpack 本身只能理解 JavaScript 模块,而 loader 能够让 webpack 处理那些非 JavaScript 文件,并把它们转换为模块。例如,可以使用 babel-loader 将 ES6/ES7/JSX 代码转换成浏览器可识别的 ES5 代码,使用 style-lo