webpack.js.org
webpack.js.org copied to clipboard
Chunk names do not respect filename setting if filename is a function
Bug report
What is the current behavior?
Chunks will receive names containing a hash with this code:
output: {
filename: '[name]-[contenthash].js',
}
Chunks will receive names without hashes (e.g., 113.js
) with this code:
output: {
filename: () => '[name]-[contenthash].js',
}
If the current behavior is a bug, please provide the steps to reproduce.
Here is a full minimal reproduction of the issue: https://github.com/skylerberg/webpack-chunk-name-issue
You can observe the behavior by downloading the repo and running:
$ npm install
$ npm run build
$ ls dist
You will see a chunk without a hash in its name.
What is the expected behavior?
I would expect identical behavior between the two examples above because the function version always resolves to the same string as the original snippet.
Other relevant information: webpack version: 5.89.0 Node.js version: v18.17.1 Operating System: Pop!_OS 20.04
It is possible to workaround this bug by explicitly setting chunkFilename
. So I'm fine, but I wanted to report this so that it can get fixed and others won't be impacted by this surprising behavior.
I want to say it is not a bug, there is our logic https://github.com/webpack/webpack/blob/main/lib/config/defaults.js#L835, we can't run the funtion before getting the name because we pass pathData
to this function (https://webpack.js.org/configuration/output/#outputfilename), I want to say it is a limitation and we should improve our docs here