Current behaviour 💣
In the index.html I want to include a static JS File (a 3rd party JS file, not bundled with webpack):
index.html
<script src="modernizr.js"></script>
This file should be included before the main JS file (injected by html-webpack-plugin) and should not be defered. It's name should also be unique (hashed).
After build, the dist folder contains:
index.html:
<script src="modernizr.d680fb275258c1e22931.js">
<script defer="defer" src="js/index.0e428668b6b726cf637e.js">
but the generated js file is: modernizr.d14201e2d4a0ec290a14.js
asset modernizr.d14201e2d4a0ec290a14.js 10.5 KiB [emitted] [immutable] [from: modernizr.js] [minimized] 1 related asset
So the filenames do not match (content hashes are different) and the browser returns a 404 error.
When running webpack serve, it seems that the generated hashes are the same.
Expected behaviour ☀️
After build, the generated filename should match the filename referanced in dist html file.
Reproduction Example 👾
Use the following code above.
webpack.config.js
...
module: {
rules: {
{
test: /\.html$/i,
loader: "html-loader",
},
{
test: /modernizr\.js$/i,
type: "asset/resource",
generator: {
filename: "[name].[contenthash].js"
},
},
}
}
...
Environment 🖥
Node.js v18.15.0
darwin 22.3.0
9.5.0
job-index@1.0.0 /Users/andreivictor/Work/job-index
├─┬ clean-webpack-plugin@4.0.0
│ └── webpack@5.88.1 deduped
├─┬ copy-webpack-plugin@11.0.0
│ └── webpack@5.88.1 deduped
├─┬ css-loader@6.8.1
│ └── webpack@5.88.1 deduped
├─┬ css-minimizer-webpack-plugin@5.0.1
│ └── webpack@5.88.1 deduped
├─┬ html-loader@4.2.0
│ └── webpack@5.88.1 deduped
├─┬ html-webpack-plugin@5.5.3
│ └── webpack@5.88.1 deduped
├─┬ image-minimizer-webpack-plugin@3.8.3
│ └── webpack@5.88.1 deduped
├─┬ mini-css-extract-plugin@2.7.6
│ └── webpack@5.88.1 deduped
├─┬ sass-loader@13.3.2
│ └── webpack@5.88.1 deduped
├─┬ webpack-cli@5.1.4
│ ├─┬ @webpack-cli/configtest@2.1.1
│ │ └── webpack@5.88.1 deduped
│ ├─┬ @webpack-cli/info@2.0.2
│ │ └── webpack@5.88.1 deduped
│ ├─┬ @webpack-cli/serve@2.0.5
│ │ └── webpack@5.88.1 deduped
│ └── webpack@5.88.1 deduped
├─┬ webpack-dev-server@4.15.1
│ ├─┬ webpack-dev-middleware@5.3.3
│ │ └── webpack@5.88.1 deduped
│ └── webpack@5.88.1 deduped
└─┬ webpack@5.88.1
└─┬ terser-webpack-plugin@5.3.9
└── webpack@5.88.1 deduped
job-index@1.0.0 /Users/andreivictor/Work/job-index
└── html-webpack-plugin@5.5.3
Current behaviour 💣
In the
index.htmlI want to include a static JS File (a 3rd party JS file, not bundled withwebpack):index.html
This file should be included before the main JS file (injected by
html-webpack-plugin)and should not be defered. It's name should also be unique (hashed).After build, the
distfolder contains:index.html:but the generated js file is:
modernizr.d14201e2d4a0ec290a14.jsSo the filenames do not match (content hashes are different) and the browser returns a 404 error.
When running
webpack serve, it seems that the generated hashes are the same.Expected behaviour ☀️
After build, the generated filename should match the filename referanced in
disthtml file.Reproduction Example 👾
Use the following code above.
webpack.config.jsEnvironment 🖥