From 61a15a672e32875a64f40a81f825480f76aee2b6 Mon Sep 17 00:00:00 2001 From: hai-x <98948357+hai-x@users.noreply.github.com> Date: Wed, 13 Aug 2025 03:14:02 +0800 Subject: [PATCH] test: more case about cjs bundle to esm lib (#19787) --- .../0-create-library/adding-exports-cjs.js | 5 ++ .../0-create-library/exports-shortcut-cjs.js | 3 + .../0-create-library/overrides-exports-cjs.js | 5 ++ .../0-create-library/self-reference-cjs.js | 3 + .../0-create-library/webpack.config.js | 59 ++++++++++++++++++- .../esm-with-bundled-commonjs.js | 17 +++++- .../library/1-use-library/webpack.config.js | 24 +++++++- 7 files changed, 110 insertions(+), 6 deletions(-) create mode 100644 test/configCases/library/0-create-library/adding-exports-cjs.js create mode 100644 test/configCases/library/0-create-library/exports-shortcut-cjs.js create mode 100644 test/configCases/library/0-create-library/overrides-exports-cjs.js create mode 100644 test/configCases/library/0-create-library/self-reference-cjs.js diff --git a/test/configCases/library/0-create-library/adding-exports-cjs.js b/test/configCases/library/0-create-library/adding-exports-cjs.js new file mode 100644 index 000000000..d0f172b33 --- /dev/null +++ b/test/configCases/library/0-create-library/adding-exports-cjs.js @@ -0,0 +1,5 @@ +module.exports = { + name: "adding-exports-cjs" +}; + +module.exports.foo = "foo"; \ No newline at end of file diff --git a/test/configCases/library/0-create-library/exports-shortcut-cjs.js b/test/configCases/library/0-create-library/exports-shortcut-cjs.js new file mode 100644 index 000000000..f7a500e00 --- /dev/null +++ b/test/configCases/library/0-create-library/exports-shortcut-cjs.js @@ -0,0 +1,3 @@ +exports = { + name: "exports-shortcut-cjs" +}; diff --git a/test/configCases/library/0-create-library/overrides-exports-cjs.js b/test/configCases/library/0-create-library/overrides-exports-cjs.js new file mode 100644 index 000000000..955861606 --- /dev/null +++ b/test/configCases/library/0-create-library/overrides-exports-cjs.js @@ -0,0 +1,5 @@ +module.exports.foo = "foo"; + +module.exports = { + name: "overrides-exports-cjs" +}; diff --git a/test/configCases/library/0-create-library/self-reference-cjs.js b/test/configCases/library/0-create-library/self-reference-cjs.js new file mode 100644 index 000000000..3105b3d32 --- /dev/null +++ b/test/configCases/library/0-create-library/self-reference-cjs.js @@ -0,0 +1,3 @@ +exports.name +module.name +this.name \ No newline at end of file diff --git a/test/configCases/library/0-create-library/webpack.config.js b/test/configCases/library/0-create-library/webpack.config.js index 7967ca36d..4b0287ae9 100644 --- a/test/configCases/library/0-create-library/webpack.config.js +++ b/test/configCases/library/0-create-library/webpack.config.js @@ -806,7 +806,64 @@ module.exports = (env, { testPath }) => [ { entry: "./class-commonjs", output: { - filename: "commonjs-bundle-to-esm.mjs", + uniqueName: "class-commonjs", + filename: "commonjs-bundle-to-esm-1.mjs", + module: true, + library: { + type: "module" + } + }, + experiments: { + outputModule: true + } + }, + { + entry: "./exports-shortcut-cjs", + output: { + uniqueName: "exports-shortcut-cjs", + filename: "commonjs-bundle-to-esm-2.mjs", + module: true, + library: { + type: "module" + } + }, + experiments: { + outputModule: true + } + }, + { + entry: "./overrides-exports-cjs", + output: { + uniqueName: "overrides-exports-cjs", + filename: "commonjs-bundle-to-esm-3.mjs", + module: true, + library: { + type: "module" + } + }, + experiments: { + outputModule: true + } + }, + { + entry: "./self-reference-cjs", + output: { + uniqueName: "self-reference-cjs", + filename: "commonjs-bundle-to-esm-4.mjs", + module: true, + library: { + type: "module" + } + }, + experiments: { + outputModule: true + } + }, + { + entry: "./adding-exports-cjs", + output: { + uniqueName: "adding-exports-cjs", + filename: "commonjs-bundle-to-esm-5.mjs", module: true, library: { type: "module" diff --git a/test/configCases/library/1-use-library/esm-with-bundled-commonjs.js b/test/configCases/library/1-use-library/esm-with-bundled-commonjs.js index 879461afd..569cc6eb2 100644 --- a/test/configCases/library/1-use-library/esm-with-bundled-commonjs.js +++ b/test/configCases/library/1-use-library/esm-with-bundled-commonjs.js @@ -1,8 +1,19 @@ -import library from "library"; +import lib1 from "lib1"; +import lib2 from "lib2"; +import lib3 from "lib3"; +import lib4 from "lib4"; +import lib5 from "lib5"; + it( "should be able to import harmony exports from library (" + NAME + ")", function () { - expect(new library().getNumber()).toBe(1); + expect(new lib1().getNumber()).toBe(1); + expect(lib2).toMatchObject({}); + expect(lib3.name).toBe("overrides-exports-cjs"); + expect(lib3.foo).toBe(undefined); + expect(lib4).toEqual({}); + expect(lib5.name).toBe("adding-exports-cjs") + expect(lib5.foo).toBe("foo") } -); \ No newline at end of file +); diff --git a/test/configCases/library/1-use-library/webpack.config.js b/test/configCases/library/1-use-library/webpack.config.js index 9415f2778..e005405d0 100644 --- a/test/configCases/library/1-use-library/webpack.config.js +++ b/test/configCases/library/1-use-library/webpack.config.js @@ -695,9 +695,29 @@ module.exports = (env, { testPath }) => [ }, experiments: { outputModule: true }, externals: { - library: path.resolve( + lib1: path.resolve( testPath, - "../0-create-library/commonjs-bundle-to-esm.mjs" + "../0-create-library/commonjs-bundle-to-esm-1.mjs" + ), + lib2: path.resolve( + testPath, + "../0-create-library/commonjs-bundle-to-esm-2.mjs" + ), + lib3: path.resolve( + testPath, + "../0-create-library/commonjs-bundle-to-esm-3.mjs" + ), + lib4: path.resolve( + testPath, + "../0-create-library/commonjs-bundle-to-esm-4.mjs" + ), + lib5: path.resolve( + testPath, + "../0-create-library/commonjs-bundle-to-esm-5.mjs" + ), + lib6: path.resolve( + testPath, + "../0-create-library/commonjs-bundle-to-esm-6.mjs" ) }, externalsType: "module-import",