第五章:原理(深入浅出 Webpack 笔记)

基本概念

  • Entry:入口,Webpack 执行构建的第一步将从 Entry 开始,可抽象成输入。
  • Module:模块,在 Webpack 里一切皆模块,一个模块对应着一个文件。
    Webpack 会从配置的 Entry 开始递归找出所有依赖的模块。
  • Chunk:代码块,一个 Chunk 由多个模块组合而成,用于代码合并与分割。
  • Loader:模块转换器,用于把模块原内容按照需求转换成新内容。
  • Plugin:扩展插件,在 Webpack 构建流程中的特定时机会广播出对应的事件,插件可以监听这些事件的发生,在特定时机做对应的事情。

流程细节

Webpack 的构建流程可以分为以下三大阶段:

  • 初始化:启动构建,读取与合并配置参数,加载 Plugin,实例化 Compiler
  • 编译:从 Entry 出发,针对每个 Module 串行调用对应的 Loader 去翻译文件内容,再找到该 Module 依赖的 Module,递归地进行编译处理。
  • 输出:对编译后的 Module 组合成 Chunk,把 Chunk 转换成文件,输出到文件系统。

常用 Loaders

加载文件
  • raw-loader:把文本文件的内容加载到代码中去。
  • file-loader:把文件输出到一个文件夹中,在代码中通过相对 URL 去引用输出的文件。
  • url-loader:和 file-loader 类似,但是能在文件很小的情况下以 base64 的方式把文件内容注入到代码中去。
  • source-map-loader:加载额外的 Source Map 文件,以方便断点调试。
  • svg-inline-loader:把压缩后的 SVG 内容注入到代码中。
  • node-loader:加载 Node.js 原生模块 .node 文件。
  • image-loader:加载并且压缩图片文件。
  • json-loader:加载 JSON 文件。
  • yaml-loader:加载 YAML 文件。
编译模版
转换脚本语言
转换样式文件
  • css-loader:加载 CSS,支持模块化、压缩、文件导入等特性。
  • style-loader:把 CSS 代码注入到 JavaScript 中,通过 DOM 操作去加载 CSS
  • sass-loader:把 SCSS/SASS 代码转换成 CSS
  • postcss-loader:扩展 CSS 语法,使用下一代 CSS
  • less-loader:把 Less 代码转换成 CSS 代码。
  • stylus-loader:把 Stylus 代码转换成 CSS 代码。
检查代码
其它
  • vue-loader:加载 Vue.js 单文件组件。
  • i18n-loader:加载多语言版本,支持国际化。
  • ignore-loader:忽略掉部分文件。
  • ui-component-loader:按需加载 UI 组件库,例如在使用 antd UI 组件库时,不会因为只用到了 Button 组件而打包进所有的组件。

常用 Plugins

用于修改行为
用于优化
其它
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文首发于:Webpack 3,从入门到放弃 Update (2017.8.27) : 关于 output.pub...
    昵称都被用完了衰阅读 1,929评论 4 19
  • GitChat技术杂谈 前言 本文较长,为了节省你的阅读时间,在文前列写作思路如下: 什么是 webpack,它要...
    萧玄辞阅读 12,729评论 7 110
  • Webpack 第一章 Webpack 简介 Instagram团队在进行前端开发的过程中,发现当项目组成员越来越...
    whitsats阅读 646评论 0 1
  • ​ ​ 主要在实战上,可能对于概念讲解上不太多,如果有需要的同学可以自己看下官方文档 ​ webpack2发布也有...
    makuta阅读 639评论 0 0
  • .babelrc 文件 以上配置文件里的transform-runtime 对应的插件全名叫作babel-plu...
    Upcccz阅读 401评论 0 1