Я хочу создать новые ресурсы в плагине webpack, какие хуки мне следует использовать? - PullRequest
0 голосов
/ 03 ноября 2019

Я хочу создать новые ресурсы в плагине, чтобы они были видны в request.context (), какие хуки мне следует использовать?

Я пробовал compilation.hooks.additionalAssets и compiler.hooks.emit, новые активыпоявился в папке вывода, но во время их запроса я не мог их видеть.

Мой код сейчас выглядит так:

class ImageResolutionPlugin {
  constructor(options = {}) {
    const {
      ...
    } = options

    this.options = {
      ...
    }
  }

  resizeImages(compilation) {
    ...
  }

  apply(compiler) {
    const onEmit = async compilation => {
      compilation.hooks.additionalAssets.tapAsync(this.constructor.name, async callback => {
        try {
          await Promise.all([...this.resizeImages(compilation)])
          // At this point everything is done, so call the callback without anything in it
          callback()
        } catch (err) {
          // if at any point we hit a snag, pass the error on to webpack
          callback(err)
        }
      })
    }

    compiler.hooks.compilation.tap(this.constructor.name, onEmit)
  }
}

module.exports = ImageResolutionPlugin

Я хочу автоматизировать оптимизацию изображения. Идея состоит в том, что с помощью плагина я нахожу изображения и создаю их копии, но меньше для экранов @ 1x и @ 2x. Затем в компоненте я получаю все изображения, используя requre.contex(), и заменяю только изображения, которые мне нужны, по имени.

...