构建 Webpack 知识体系 | 青训营

63 阅读2分钟

什么是 Webpack ?

本 质Webpack 是一个现代的 JavaScript 应用程序的静态模块打包工具。它主要用于将JavaScript、CSS、图片等静态资源打包成一个或多个 bundle 文件,并可以通过在浏览器中加载这些 bundle 文件来运行整个应用程序。

bundle文件:一个 bundle 文件是一个包含多个文件或目录的压缩文件。它被用于将相关文件捆绑在一起,方便传输、存储或分发。bundle 文件可以用于多种用途,例如软件安装包、资源包、模型文件等。常见的bundle 文件格式包括 ZIPTARGZ 等。在某些操作系统或应用程序中,bundle 文件可能会被视为单个实体,用户可以像处理单个文件一样处理它。

  • 支持所有类型的文件的打包
  • 支持 less/sass => css
  • 支持 ES5/7/8=>ES5

Webpack打包流程:

  • 初始化包环境 yarn init

  • 安装依赖包 yarn add webpack webpack-cli -D

  • 配置 scripts (自定义命令) "scripts":{ "build":"webpack"}

Webpack 基础

  1. 入口 (entry): 指示 Webpack 应该从哪个文件开始构建依赖图,默认为./src/index.js。可以通过配置文件来指定不同的入口文件。

  2. 出口(output): 指示 Webpack 应该将打包后的文件输出到哪个目录,并使用什么文件名。默认为./dist/main.js。可以通过配置文件来指定不同的输出目录和文件名。

  3. 加载器(loaders): 用于对不同类型的文件进行处理和转换,例如将 ES6 代码转换为 ES5、将 SCSS 文件转换为 CSS 等。加载器可以在 Webpack 配置中进行配置。

  4. 插件(plugins): 用于执行更广泛的任务,例如优化打包结果、代码压缩、生成 HTML 文件等。插件可以在 Webpack 配置中进行配置。

  5. 模式(mode): 用于指定当前的构建环境,有两个可选值:developmentproduction。在开发环境下,Webpack 会开启一些辅助功能,例如热模块替换 (Hot Module Replacement) ,而在生产环境下,Webpack会进行优化和压缩,以提供更小的文件体积和更好的性能。

  6. 模块化:Webpack 支持使用 ES6 的 import/export 语法来进行模块化开发,并且可以处理各种模块依赖关系,包括CSS、图片等静态资源。

  7. 代码拆分:Webpack 可以将代码拆分成多个 bundle 文件,实现按需加载,以提高应用程序的加载速度。

  8. 开发服务器:Webpack 提供了一个开发服务器,可以实时监听文件变化并自动重新构建应用程序,同时支持热模块替换,方便开发调试。