Estoy tratando de usar el hash de compilación para los nombres de archivos de activos/recursos, pero no importa lo que intente, solo genera un hash diferente para cada archivo en la salida de activos/recursos. Todos los nombres de archivos de fragmentos obtienen el mismo hash de compilación correcto.
Por ejemplo, los archivos del paquete principal son todos correctos:
appbundle.42cf6539b0e35868deab.js
polyfillsbundle.42cf6539b0e35868deab.js
etc..
Sin embargo, las imágenes en la carpeta de activos se ven así, con diferentes valores hash. ¿Hay alguna manera de hacer que coincidan con el hash de compilación como los fragmentos del paquete?
imagen1.ec620b3ff0d269c77f1b.svg
imagen2.984ca5bc273b4992cb6c.svg
etc..
Configuración relevante del paquete web:
output: { filename: '[name].[hash][ext]', chunkFilename: '[name].[hash][ext]', publicPath: './dist/', path: path.resolve(__dirname, 'dist'), assetModuleFilename: 'assets/[name].[hash][ext]' } ... module: { rules: [ ... { test: /\.(eot|woff|woff2|ttf|png|jpg|gif|svg|ico)$/, type: 'asset/resource' }, ... ] }Pero, ¿qué estás tratando de lograr?
Está obteniendo un nuevo hash por archivo de imagen, porque con asset/resource le pidió a Webpack que emitiera recursos para separar archivos.
Cuando usa el marcador de posición [hash], Webpack generaría un hash del nombre del archivo. Dado que tiene diferentes nombres de archivo ~> diferentes hashes.
Si desea agregar algún sufijo aleatorio por compilación a sus recursos, haría algo como:
const seed = new Date().getTime() // or your generation strategy module.exports = { . . . output: { . . . assetModuleFilename: `assets/[name].${seed}[ext]` } ...