# webpack 入门到放弃

# Webpack是个啥?

简单了解下 🐌

  • Webpack 是一种前端资源构建工具,一个静态模块打包器(module bundler)。
  • Webpack 会把前端所有资源文件(js/json/css/img/less/...)作为模块处理。
  • 根据模块的依赖关系进行静态分析,打包生成对应的静态资源(bundle)

WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适的格式以供浏览器使用。

构建就是把源代码转换成发布到线上的可执行 JavaScrip、CSS、HTML 代码,包括如下内容。

  • 代码转换:TypeScript 编译成 JavaScript、SCSS 编译成 CSS 等。
  • 文件优化:压缩 JavaScript、CSS、HTML 代码,压缩合并图片等。
  • 代码分割:提取多个页面的公共代码、提取首屏不需要执行部分的代码让其异步加载。
  • 模块合并:在采用模块化的项目里会有很多个模块和文件,需要构建功能把模块分类合并成一个文件。
  • 自动刷新:监听本地源代码的变化,自动重新构建、刷新浏览器。
  • 代码校验:在代码被提交到仓库前需要校验代码是否符合规范,以及单元测试是否通过。
  • 自动发布:更新完代码后,自动构建出线上发布代码并传输给发布系统。

构建其实是工程化、自动化思想在前端开发中的体现,把一系列流程用代码去实现,让代码自动化地执行这一系列复杂的流程。

去官网偷张图 😀

# Webpack核心概念

# 1、Entry

入口(Entry)指示Webpack以哪个文件为入口起点开始打包,分析构建内部依赖图。

# 2、Output

输出(Output)指示Webpack打包后的资源bundles输出到哪里,以及如何命名。

# 3、Loader

Loader 让Webpack能处理非JavaScript文件(因为webpack自身只能理解JavaScript)

# 4、Plugins

插件(plugins)可以执行范围更广的任务。范围包括打包优化压缩、重新定义环境中的变量等。

# 5、Mode

模式(Mode)指示Webpack使用相应的模式配置

选项 描述 特点
development 会将 process.env.NODE_ENV 的值设为 development。启用 NamedChunksPluginNamedModulesPlugin 能让代码本地调试运行的环境
production 会将 process.env.NODE_ENV 的值设为 production。启用 FlagDependencyUsagePlugin, FlagIncludedChunksPlugin, ModuleConcatenationPlugin,NoEmitOnErrorsPlugin, OccurrenceOrderPlugin, SideEffectsFlagPluginUglifyJsPlugin. 能让代码优化上线运行的环境
Last Updated: 12/4/2022, 12:29:31 PM