diff --git a/e2e/cases/html-loader/index.test.ts b/e2e/cases/html-loader/index.test.ts
new file mode 100644
index 000000000..d276f03da
--- /dev/null
+++ b/e2e/cases/html-loader/index.test.ts
@@ -0,0 +1,44 @@
+import { build, dev, rspackOnlyTest } from '@e2e/helper';
+import { expect } from '@playwright/test';
+
+rspackOnlyTest(
+ 'should allow to use html-loader in development',
+ async ({ page }) => {
+ const rsbuild = await dev({
+ cwd: __dirname,
+ page,
+ });
+
+ const files = await rsbuild.unwrapOutputJSON();
+ const filenames = Object.keys(files);
+
+ expect(
+ filenames.some((filename) =>
+ filename.includes('dist/static/image/image.png'),
+ ),
+ ).toBeTruthy();
+
+ const htmlFile = filenames.find((filename) => filename.endsWith('.html'));
+ expect(files[htmlFile!]).toContain(' {
+ const rsbuild = await build({
+ cwd: __dirname,
+ });
+
+ const files = await rsbuild.unwrapOutputJSON();
+ const filenames = Object.keys(files);
+
+ expect(
+ filenames.some((filename) =>
+ filename.includes('dist/static/image/image.png'),
+ ),
+ ).toBeTruthy();
+
+ const htmlFile = filenames.find((filename) => filename.endsWith('.html'));
+ expect(files[htmlFile!]).toContain('Hello World
+`;
diff --git a/e2e/cases/html-loader/src/template.html b/e2e/cases/html-loader/src/template.html
new file mode 100644
index 000000000..3533f1864
--- /dev/null
+++ b/e2e/cases/html-loader/src/template.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ html-loader
+
+
+
+
+
+
diff --git a/packages/core/package.json b/packages/core/package.json
index f85202432..772fd2659 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -75,7 +75,7 @@
"dotenv": "16.4.5",
"dotenv-expand": "11.0.6",
"fs-extra": "^11.2.0",
- "html-rspack-plugin": "6.0.0",
+ "html-rspack-plugin": "6.0.1",
"http-proxy-middleware": "^2.0.6",
"jiti": "^1.21.6",
"launch-editor-middleware": "^2.8.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c9917013b..8e9afed38 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -201,6 +201,12 @@ importers:
specifier: workspace:*
version: link:../browserslist-config-mock
+ e2e/cases/html-loader:
+ dependencies:
+ html-loader:
+ specifier: ^5.1.0
+ version: 5.1.0(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.3)))
+
e2e/cases/react/react-compiler-babel:
dependencies:
react:
@@ -664,8 +670,8 @@ importers:
specifier: ^11.2.0
version: 11.2.0
html-rspack-plugin:
- specifier: 6.0.0
- version: 6.0.0(@rspack/core@1.0.3(@swc/helpers@0.5.12))
+ specifier: 6.0.1
+ version: 6.0.1(@rspack/core@1.0.3(@swc/helpers@0.5.12))
http-proxy-middleware:
specifier: ^2.0.6
version: 2.0.6
@@ -3770,6 +3776,9 @@ packages:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
+ camel-case@4.1.2:
+ resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
+
camelcase-css@2.0.1:
resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
engines: {node: '>= 6'}
@@ -3855,6 +3864,10 @@ packages:
resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
engines: {node: '>=8'}
+ clean-css@5.3.3:
+ resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==}
+ engines: {node: '>= 10.0'}
+
cli-cursor@3.1.0:
resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
engines: {node: '>=8'}
@@ -4781,8 +4794,19 @@ packages:
html-escaper@2.0.2:
resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
- html-rspack-plugin@6.0.0:
- resolution: {integrity: sha512-p/hXOkywyuhyt5R2onk1UH0RCfu7rmiyMHdp88jB06lnoggEswiBKKKoTEFKza8bBf99a2Vi+rKIuDOIRFQAbw==}
+ html-loader@5.1.0:
+ resolution: {integrity: sha512-Jb3xwDbsm0W3qlXrCZwcYqYGnYz55hb6aoKQTlzyZPXsPpi6tHXzAfqalecglMQgNvtEfxrCQPaKT90Irt5XDA==}
+ engines: {node: '>= 18.12.0'}
+ peerDependencies:
+ webpack: ^5.0.0
+
+ html-minifier-terser@7.2.0:
+ resolution: {integrity: sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==}
+ engines: {node: ^14.13.1 || >=16.0.0}
+ hasBin: true
+
+ html-rspack-plugin@6.0.1:
+ resolution: {integrity: sha512-7RAFL+4T9C9XUm0x7H9ZRvatRygc5MCAc4XqU+T+NYHRncwPS8G/r64/lcaUBWkE0Gjws27lxJZBpudTB6z6vA==}
engines: {node: '>=16.0.0'}
peerDependencies:
'@rspack/core': 0.x || 1.x
@@ -5797,6 +5821,9 @@ packages:
resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
engines: {node: '>=6'}
+ param-case@3.0.4:
+ resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==}
+
parent-module@1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
@@ -5832,6 +5859,9 @@ packages:
resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
engines: {node: '>= 0.8'}
+ pascal-case@3.1.2:
+ resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
+
patch-console@1.0.0:
resolution: {integrity: sha512-nxl9nrnLQmh64iTzMfyylSlRozL7kAXIaxw1fVcLYdyhNkJCRUzirRZTikXGJsg+hc4fqpneTK6iU2H1Q8THSA==}
engines: {node: '>=10'}
@@ -6280,6 +6310,10 @@ packages:
rehype-stringify@9.0.4:
resolution: {integrity: sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==}
+ relateurl@0.2.7:
+ resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==}
+ engines: {node: '>= 0.10'}
+
remark-gfm@3.0.1:
resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==}
@@ -10534,6 +10568,11 @@ snapshots:
callsites@3.1.0: {}
+ camel-case@4.1.2:
+ dependencies:
+ pascal-case: 3.1.2
+ tslib: 2.6.2
+
camelcase-css@2.0.1: {}
camelcase@6.3.0: {}
@@ -10621,6 +10660,10 @@ snapshots:
ci-info@3.9.0: {}
+ clean-css@5.3.3:
+ dependencies:
+ source-map: 0.6.1
+
cli-cursor@3.1.0:
dependencies:
restore-cursor: 3.1.0
@@ -11666,7 +11709,23 @@ snapshots:
html-escaper@2.0.2: {}
- html-rspack-plugin@6.0.0(@rspack/core@1.0.3(@swc/helpers@0.5.12)):
+ html-loader@5.1.0(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.3))):
+ dependencies:
+ html-minifier-terser: 7.2.0
+ parse5: 7.1.2
+ webpack: 5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.3))
+
+ html-minifier-terser@7.2.0:
+ dependencies:
+ camel-case: 4.1.2
+ clean-css: 5.3.3
+ commander: 10.0.1
+ entities: 4.5.0
+ param-case: 3.0.4
+ relateurl: 0.2.7
+ terser: 5.31.6
+
+ html-rspack-plugin@6.0.1(@rspack/core@1.0.3(@swc/helpers@0.5.12)):
dependencies:
'@rspack/lite-tapable': 1.0.0
optionalDependencies:
@@ -12927,6 +12986,11 @@ snapshots:
p-try@2.2.0: {}
+ param-case@3.0.4:
+ dependencies:
+ dot-case: 3.0.4
+ tslib: 2.6.2
+
parent-module@1.0.1:
dependencies:
callsites: 3.1.0
@@ -12975,6 +13039,11 @@ snapshots:
parseurl@1.3.3: {}
+ pascal-case@3.1.2:
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.6.2
+
patch-console@1.0.0: {}
path-exists@4.0.0: {}
@@ -13474,6 +13543,8 @@ snapshots:
hast-util-to-html: 8.0.4
unified: 10.1.2
+ relateurl@0.2.7: {}
+
remark-gfm@3.0.1:
dependencies:
'@types/mdast': 3.0.15