compiler

# compiler

Webpack 提供了 Node.js API,可以在 Node.js 运行时下直接使用。主要用于自定义构建或开发流程。

此时所有的报告和错误处理都必须自行实现,webpack 仅仅负责编译的部分。

使用时安装webpack后直接导入

import webpack from 'webpack';    // 导入得到的是一个函数

# webpack()函数

# 2个参数

  • 配置对象 | 包含多个配置对象的数组(这将创建多个compiler实例,并在所有实例编译完执行回调)

  • 回调函数

webpack({
  // [配置对象](/configuration/)
}, (err, stats) => { // [Stats Object](#stats-object)
  if (err || stats.hasErrors()) {
    // [在这里处理错误](#error-handling)
  }
  // 处理完成
});

// 传入配置数组,同时执行多个配置对象。
webpack([
  { entry: './index1.js', output: { filename: 'bundle1.js' } },
  { entry: './index2.js', output: { filename: 'bundle2.js' } }
], (err, stats) => { // [Stats Object](#stats-object)
  process.stdout.write(stats.toString() + '\n');
})

err对象 不包含 编译错误,必须使用 stats.hasErrors() 单独处理。

err 对象只包含 webpack 相关的问题,例如配置错误等。

# compiler实例

如果你不向 webpack 传入可执行的回调函数, 它会返回一个 webpack Compiler 实例。

Compiler 基本上只是执行最低限度的功能,以维持生命周期运行的功能。 它将所有的加载、打包和写入工作, 都委托到注册过的插件上。

# 2个方法

都是用来启动编译的方法,不同点是watch检测到文件变更会重新编译,且返回一个watching实例。

  • .run(callback)

  • .watch(watchOptions, handler)

使用 run 方法启动所有编译工作。 完成之后,执行传入的的 callback 函数。 最终记录下来的概括信息(stats)和错误(errors),都应在这个 callback 函数中获取。

const webpack = require('webpack');

const compiler = webpack({
  // [配置对象](/configuration/)
});

compiler.run((err, stats) => { // [Stats Object](#stats-object)
// ...
  // 关闭compiler,这样其他低优先级的工作才有机会执行
  compiler.close((closeErr) => {
    // ...
  });
});


const watching = compiler.watch({
  // [watchOptions](/configuration/watch/#watchoptions) 示例
  aggregateTimeout: 300,
  poll: undefined
}, (err, stats) => { // [Stats Object](#stats-object)
  // 这里打印 watch/build 结果...
  console.log(stats);
});

watching.close((closeErr) => {
  console.log('Watching Ended.');
});

# 1个属性

  • .hooks

用于将一个插件注册 到 Compiler 的生命周期中的所有钩子事件上。