yezitoo 2019-12-20
打包工具有多种,实际中 webpack 接触的比较多,目前中文文档跟英文文档有些对不上,其中有些概念比较分散,对此进行集中的整理。
任何时候,一个文件依赖于另一个文件,webpack 把这种情况视为依赖关系。这让 webpack 可以接受非代码资源,例如图片或字体,并且可以将它们作为依赖提供给你的应用程序。
当 webpack 处理你的程序时,可能是从命令行或配置文件中定义的一系列模块开始。从入口文件开始,webpack 递归地构建一个依赖图(Dependency Graph),这个依赖图包含着应用程序所需的每个模块,并生成一个或多个 bundle
,可由浏览器加载。
runtime
和 manifest
数据,基本上是在浏览器运行时,webpack 用来连接模块化应用程序所需的所有代码。manifest
作为名词时,中文意思是:(船或飞机的)货单,旅客名单manifest
”。runtime
会通过 manifest
来解析和加载模块。import
或 require
语句现在都已经转换为 __webpack_require__
方法,此方法指向模块标识符(module identifier)。bundles
由 chunks
组成,其中有多种类型(例如入口)。chunks
与输出 bundles
直接对应,但是,有些配置不产生一对一关系。bundle
。指将代码分成不同的 bundles/chunks
,然后可以按需加载,而不是加载包含所有内容的单个 bundles
。
webpack 提供了一种使用称为 substitution (可替换模板字符串) 的方式,通过带括号字符串来模板化文件名。
模版 | 描述 |
---|---|
[hash] | 模块标识符的 hash。修改一个模块,其它模块生成的 hash 都会变。 |
[contenthash] | 文件内容的 hash,每个都不相同。只有改变了内容的文件的 hash 才会变。 |
[chunkhash] | chunk 内容的 hash。一个文件改变,其关联的文件 hash 也会变。 |
[name] | 模块的名称 |
[id] | 模块标识符 |
[query] | 模块的 query,例如文件名 ? 后面的字符串 |
[function] | 返回文件名称的方法 |