2

我目前正在使用带有自定义打印机的基本 Webpack API来生成构建结果,即:

import webpack from 'webpack'

webpack({ /* webpack config */ }, printStats)

function printStats(err, stats) {
  // my custom printing of build results
}

现在我想切换到 using webpack-dev-middleware,但保留我的 stat 打印机。我希望这可能会起作用:

import webpackDev from 'webpack-dev-middleware'

app.use(webpackDev(webpack({ /* webpack config */ }, printStats), {
    quiet: true // disable default printing so I can use my own
    // ... more webpack-dev-middelware configuration
}))

但它只打印第一个编译并忽略后续编译,即使它们确实发生了。这样做的正确方法是什么?

4

1 回答 1

0

我通过以下方法直接监听Webpack编译器对象解决了这个问题plugin

const compiler = webpack({ /* webpack config */ })

compiler.plugin('done', stats => {
  // my custom printing of build results
})

app.use(webpackDev(compiler, {
  quiet: true // disable default printing so I can use my own
  // ... more webpack-dev-middelware configuration
}))

done每次编译完成时都会发生该事件,无论是否成功。plugin您可以通过该方法收听的其他事件:

  • 'run':表示正在进行一次性编译。异步;listener 采用编译器对象和回调函数,必须调用它们以指示侦听器已完成处理事件。
  • 'watch-run':表示源代码正在监视模式下编译或重新编译。异步;listener 采用编译器对象和回调函数,必须调用它们以指示侦听器已完成处理事件。
  • 'invalid':表示在观看的过程中检测到源发生了变化(不久之后会发生一个watch-run事件。同步;侦听器不接受任何参数。
于 2016-06-24T06:40:11.797 回答