The filename option of configureImageRule and configureFontRule is not consistent with copyFiles.
With copyFiles, [ext] doesn't include the dot => jpg
With configureImageRule, [ext] includes the dot => .jpg
This means we have to set 2 different config to achieve the same result:
.configureImageRule({filename: '[path][name].[hash:8][ext]'})
.copyFiles([{context: './', from: './assets/images', to: '[path][name].[hash:8].[ext]'}])