Я хочу создать новые ресурсы в плагине, чтобы они были видны в 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()
, и заменяю только изображения, которые мне нужны, по имени.