1. Resolver(解析器)

有三种类型的解析器,它们分别用于不同类型的模块:

  • compiler.resolvers.normal:解析普通模块。
  • compiler.resolvers.context:解析上下文模块。
  • compiler.resolvers.loader:解析loader

任何插件都应该使用this.fileSystem作为文件系统,因为它会被缓存。它只有异步的命名函数,但是如果用户使用同步文件系统实现(在enhanced-require中),它们可能表现同步。

To join paths any plugin should use this.join. It normalizes the paths. There is a this.normalize too.要连接路径,任何插件都应该使用this.join。它可序列化路径。也有一个this.normalize

this.forEachBail(array, iterator, callback)中可以使用一个bailing的异步forEach实现

要将请求传递给其他解析插件,请使用this.doResolve(types: String|String[], request: Request, message: String, callback)方法。types是多种可能的请求类型,它们是按照优先级进行测试的。

interface Request {
  path: String // 请求的当前目录
  request: String // 当前请求字符串
  query: String // 请求的查询字符串,如果有的话
  module: boolean // 请求从一个模块开始
  directory: boolean // 请求指向一个目录
  file: boolean // 请求指向一个文件
  resolved: boolean //  请求被解决或已完成
  // undefine表示布尔字段为false
}

// 示例
// from /home/user/project/file.js: require("../test?charset=ascii")
{
  path: "/home/user/project",
  request: "../test",
  query: "?charset=ascii"
}
// from /home/user/project/file.js: require("test/test/")
{
  path: "/home/user/project",
  request: "test/test/",
  module: true,
  directory: true
}

1.1. resolve(context: String, request: String)

解决过程开始之前。

1.2. resolve-step(types: String[], request: Request)

在解析过程中单步执行之前。

1.3. module(request: Request) async waterfall

找到一个模块请求,并且应该得到解决。

1.4. directory(request: Request) async waterfall

找到一个目录请求,并且应该得到解决。

1.5. file(request: Request) async waterfall

找到一个文件请求,并且应该得到解决。

1.6. 插件可以提供更多的扩展点

下面列出了webpack提供的默认插件。They are all (request: Request) async waterfall.它们都是(request: Request)异步瀑布。

普通模块和上下文的过程是 : module -> module-module -> directory -> file.

loader的过程是:module -> module-loader-module -> module-module -> directory -> file.

1.7. module-module

应该在指定的目录中查找模块。path包含目录。

1.8. module-loader-module (only for loaders)

在模块模板应用于模块名称之前。这个过程将使用module-module继续执行。

Copyright © tuzhu008 2017 all right reserved,powered by Gitbook该文件修订时间: 2017-11-21 16:19:15

results matching ""

    No results matching ""