From 6382a6653b887bb3ae648a73de0a7434e2a3d9de Mon Sep 17 00:00:00 2001 From: Qingyu Wang <40660121+colinaaa@users.noreply.github.com> Date: Fri, 14 Mar 2025 21:26:17 +0800 Subject: [PATCH] fix: add `strict: true` to ContextModule --- lib/ContextModule.js | 1 + .../context-module/index.mjs | 41 +++++++++++++++++++ .../context-module/infrastructure-log.js | 7 ++++ .../context-module/sub/a.js | 1 + .../context-module/webpack.config.js | 6 +++ 5 files changed, 56 insertions(+) create mode 100644 test/configCases/concatenate-modules/context-module/index.mjs create mode 100644 test/configCases/concatenate-modules/context-module/infrastructure-log.js create mode 100644 test/configCases/concatenate-modules/context-module/sub/a.js create mode 100644 test/configCases/concatenate-modules/context-module/webpack.config.js diff --git a/lib/ContextModule.js b/lib/ContextModule.js index 9dfa3c8ba..abe680704 100644 --- a/lib/ContextModule.js +++ b/lib/ContextModule.js @@ -435,6 +435,7 @@ class ContextModule extends Module { defaultObject: "redirect-warn" }; this.buildInfo = { + strict: true, snapshot: undefined }; this.dependencies.length = 0; diff --git a/test/configCases/concatenate-modules/context-module/index.mjs b/test/configCases/concatenate-modules/context-module/index.mjs new file mode 100644 index 000000000..268e134ff --- /dev/null +++ b/test/configCases/concatenate-modules/context-module/index.mjs @@ -0,0 +1,41 @@ +/** @type {import('fs')} */ +const fs = __non_webpack_require__("fs"); + +it("should import", async () => { + const n = "a.js"; + const { default: a1 } = await import(`./sub/${n}`); + expect(a1).toBe("a"); +}); + +it("should startsWith use strict", async () => { + const source = fs.readFileSync(__filename, "utf-8"); + expect(source.length).not.toBe(0); + expect(source.startsWith('/******/ "use strict"')).toBeTruthy(); +}); + +it("should have all strict modules", () => { + const source = fs.readFileSync(__filename, "utf-8"); + expect(source.length).not.toBe(0); + + expect(source).not.toContain( + [ + "This", + "entry", + "needs", + "to", + "be", + "wrapped", + "in", + "an", + "IIFE", + "because", + "it", + "needs", + "to", + "be", + "in", + "strict", + "mode." + ].join(" ") + ); +}); diff --git a/test/configCases/concatenate-modules/context-module/infrastructure-log.js b/test/configCases/concatenate-modules/context-module/infrastructure-log.js new file mode 100644 index 000000000..10532afb6 --- /dev/null +++ b/test/configCases/concatenate-modules/context-module/infrastructure-log.js @@ -0,0 +1,7 @@ +module.exports = options => { + if (options.cache && options.cache.type === "filesystem") { + return [/Pack got invalid because of write to/]; + } + + return []; +}; diff --git a/test/configCases/concatenate-modules/context-module/sub/a.js b/test/configCases/concatenate-modules/context-module/sub/a.js new file mode 100644 index 000000000..3ea9a15ea --- /dev/null +++ b/test/configCases/concatenate-modules/context-module/sub/a.js @@ -0,0 +1 @@ +export default "a" diff --git a/test/configCases/concatenate-modules/context-module/webpack.config.js b/test/configCases/concatenate-modules/context-module/webpack.config.js new file mode 100644 index 000000000..a5ea1d099 --- /dev/null +++ b/test/configCases/concatenate-modules/context-module/webpack.config.js @@ -0,0 +1,6 @@ +/** @type {import("../../../../").Configuration} */ +module.exports = { + entry: "./index.mjs", + output: { iife: false }, + optimization: { concatenateModules: true } +};