likes
comments
collection
share

每天读一点webpack-003

作者站长头像
站长
· 阅读数 17

day-03-webpack Compiler 类

  • Compiler 类用于实例化一个 compiler 实例

    • 该类中主要掌控整个打包流程,开始打包 ==> 实例划 Compilation进行打包 ===> emitAssets打包结果输出
    • webpack 为了保证很好的扩展性,在实现时通过tapable工具库定义了大量的钩子,而在整个项目打包编译过程中,会在指定打包节点调用特定类型的钩子,从而全过程的可控。
    • 定义一些方法提供给 compile 钩子函数使用如:getCache、getInfrastructureLogger
  • 关键方法

    • run: 启动打包流程

      1. beforeRun 钩子调用
      2. run钩子调用
      3. records获取
      4. compile调用,开始打包流程
      5. onCompiled方法调用,打包结果输出
      • 每天读一点webpack-003
    • compile: 启动编译

      1. beforeCompile 钩子调用
      2. compile 钩子调用
      3. newCompilation 获取 compilation
      4. make钩子调用
      5. finishMake钩子调用
      6. compilation.finish 调用,结束编译
      7. compilation.seal 调用,打包编译结果
      8. afterComple 钩子调用
      • 每天读一点webpack-003
    • newCompilation: 用于获取 compilation实例
    • onCompiled: 调用 emitAssets 进行打包结果输出

      • 每天读一点webpack-003
  • 抛开以上所列出功能中的钩子函数调用,webpackCompiler 类的功能流程比较简单:run ==> compile ==> compilation ==> compilation.finish ==> compilation.seal ==> emitAssets