# Builder

The builder task can be either the watch or the build. The key difference is that watch runs the webpack compiler in watch mode, watching for changes and enabling hot-loading capabilities. Here we'll analyze their APIs in greater detail:

# Watch

Spins up the webpack compiler in watch mode and uses a configuration built for speed and DX experience, focusing on live reloading and speed of bundling. The Watch Task\ implements theIWatchinterface, which describes all exported values. The instance is accessible viaquercia.tasks.watch`.

import { NextHandleFunction } from 'connect'
import { EventStream } from 'webpack-hot-middleware'

export default interface IConfig {
  // the previous webpack compilation hash
  // useful for invalidating some logic on changes
  prev: string

  // the HMR middleware used to serve requests on the dev port
  middleware: NextHandleFunction & EventStream
}

# Build

The build task has no public methods, but you can still hook into the process via the hooks value exported from the quercia class.