Mi configuración funcionaba bien en webpack versión 4.6.0 y webpack-assets-manifest versión 3.1.1
desde que actualicé a webpack 5 y webpack-assets-manifest a 5 . No obtengo valor en mi manifestObject , es solo un objeto vacío
Sospecho que esto está sucediendo porque la función de transformación que se ejecuta antes de crear el manifiesto buscó en la nueva documentación de webpack-assets-manifest pero no pudo hacer que funcionara
mi objetivo es acceder al valor del manifiesto en la función de transformación, pero parece que la función de transformación se está ejecutando antes de que se genere el manifiesto
var CopyWebpackPlugin = require('copy-webpack-plugin'); var SaveHashes = require('webpack-assets-manifest'); const manifest = new SaveHashes({ entrypoints: true, entrypointsKey: 'entryPoints' }); module.exports = { entry: { main: ['./src/apps/main'], games: ['./src/apps/games'], }, output: { path: path.join(__dirname, 'dist'), publicPath: assetsUrl, filename: 'assets/javascript/[name].[contenthash].js', chunkFilename: 'assets/javascript/[name].[contenthash].js' }, . . . . . plugins: [ new CleanWebpackPlugin(), manifest, new CopyWebpackPlugin([ { from: './views/**/*', to: path.join(__dirname, 'dist'), transform(content, path) { // I want to access manifest here // so that I can inject the final script(javascript bundle with content hash) // in my view template const manifestObject = JSON.parse(manifest); } } ]) ] };necesitas exportarlo así
const ManifestPlugin = require("webpack-manifest-plugin").WebpackManifestPlugin; ..... new ManifestPlugin({ fileName: "asset-manifest.json", publicPath: paths.publicUrlOrPath, generate: (seed, files, entrypoints) => { const manifestFiles = files.reduce((manifest, file) => { manifest[ file.name ] = file.path; return manifest; }, seed); const entrypointFiles = entrypoints.main.filter( (fileName) => !fileName.endsWith(".map") ); return { files: manifestFiles, entrypoints: entrypointFiles, }; }, }), y funcionará WebpackManifestPlugin es lo que necesita