From b5069197ff2fbed1a9e4736b24594594197b3c06 Mon Sep 17 00:00:00 2001 From: Jacob Wejendorp Date: Wed, 30 Jun 2021 22:47:58 +0200 Subject: [PATCH] test: add failing test for hashSalt in prod mode (realContentHash) Setting output.hashSalt together with optimization.realContentHash (e.g. prod mode) results in wrong urls for asset-modules, resulting in broken bundles. Added test seems to be minimum to reproduce. --- .../expected/c9e192c015437a21dea1.svg | 1 + .../asset-modules-salted/expected/main.css | 5 +++ test/cases/asset-modules-salted/index.js | 1 + test/cases/asset-modules-salted/react.svg | 1 + test/cases/asset-modules-salted/style.css | 4 +++ .../cases/asset-modules-salted/test.filter.js | 3 ++ .../asset-modules-salted/webpack.config.js | 36 +++++++++++++++++++ 7 files changed, 51 insertions(+) create mode 100644 test/cases/asset-modules-salted/expected/c9e192c015437a21dea1.svg create mode 100644 test/cases/asset-modules-salted/expected/main.css create mode 100644 test/cases/asset-modules-salted/index.js create mode 100644 test/cases/asset-modules-salted/react.svg create mode 100644 test/cases/asset-modules-salted/style.css create mode 100644 test/cases/asset-modules-salted/test.filter.js create mode 100644 test/cases/asset-modules-salted/webpack.config.js diff --git a/test/cases/asset-modules-salted/expected/c9e192c015437a21dea1.svg b/test/cases/asset-modules-salted/expected/c9e192c015437a21dea1.svg new file mode 100644 index 00000000..5b3b22a4 --- /dev/null +++ b/test/cases/asset-modules-salted/expected/c9e192c015437a21dea1.svg @@ -0,0 +1 @@ +logo-on-dark-bg \ No newline at end of file diff --git a/test/cases/asset-modules-salted/expected/main.css b/test/cases/asset-modules-salted/expected/main.css new file mode 100644 index 00000000..6e5140dd --- /dev/null +++ b/test/cases/asset-modules-salted/expected/main.css @@ -0,0 +1,5 @@ +body { + background: red; + background-image: url(c9e192c015437a21dea1.svg); +} + diff --git a/test/cases/asset-modules-salted/index.js b/test/cases/asset-modules-salted/index.js new file mode 100644 index 00000000..aa3357bf --- /dev/null +++ b/test/cases/asset-modules-salted/index.js @@ -0,0 +1 @@ +import './style.css'; diff --git a/test/cases/asset-modules-salted/react.svg b/test/cases/asset-modules-salted/react.svg new file mode 100644 index 00000000..5b3b22a4 --- /dev/null +++ b/test/cases/asset-modules-salted/react.svg @@ -0,0 +1 @@ +logo-on-dark-bg \ No newline at end of file diff --git a/test/cases/asset-modules-salted/style.css b/test/cases/asset-modules-salted/style.css new file mode 100644 index 00000000..52c2b3e4 --- /dev/null +++ b/test/cases/asset-modules-salted/style.css @@ -0,0 +1,4 @@ +body { + background: red; + background-image: url(./react.svg); +} diff --git a/test/cases/asset-modules-salted/test.filter.js b/test/cases/asset-modules-salted/test.filter.js new file mode 100644 index 00000000..042a0256 --- /dev/null +++ b/test/cases/asset-modules-salted/test.filter.js @@ -0,0 +1,3 @@ +const webpack = require('webpack'); + +module.exports = () => webpack.version[0] !== '4'; diff --git a/test/cases/asset-modules-salted/webpack.config.js b/test/cases/asset-modules-salted/webpack.config.js new file mode 100644 index 00000000..27119c4f --- /dev/null +++ b/test/cases/asset-modules-salted/webpack.config.js @@ -0,0 +1,36 @@ +import Self from '../../../src'; + +/** + * Bug report: + * Setting output.hashSalt together with optimization.realContentHash (e.g. prod mode) + * results in wrong urls for asset-modules. + */ + +module.exports = { + entry: './index.js', + output: { + // if salt is omitted, the realContentHash value works in css + hashSalt: 'i break things', + }, + optimization: { + // if this is disabled, filenames match even with hashSalt + realContentHash: true, + }, + module: { + rules: [ + { + test: /\.css$/, + use: [Self.loader, 'css-loader'], + }, + { + test: /\.svg$/, + type: 'asset/resource', + }, + ], + }, + plugins: [ + new Self({ + filename: '[name].css', + }), + ], +};