diff --git a/lib/sharing/ConsumeSharedPlugin.js b/lib/sharing/ConsumeSharedPlugin.js index a1a3c855ed4..1d8eb3ebd55 100644 --- a/lib/sharing/ConsumeSharedPlugin.js +++ b/lib/sharing/ConsumeSharedPlugin.js @@ -224,6 +224,10 @@ class ConsumeSharedPlugin { ); return resolve(); } + if (data.name === packageName) { + // Package self-referencing + return resolve(); + } const requiredVersion = getRequiredVersionFromDescriptionFile( data, packageName diff --git a/test/configCases/sharing/consume-self-reference/index.js b/test/configCases/sharing/consume-self-reference/index.js new file mode 100644 index 00000000000..a26f2e2c332 --- /dev/null +++ b/test/configCases/sharing/consume-self-reference/index.js @@ -0,0 +1,4 @@ +it("should be able to consume package self referencing", async () => { + const result = await import("my-middleware"); + expect(result.m()).toBe("ABA"); +}); diff --git a/test/configCases/sharing/consume-self-reference/node_modules/my-middleware/index.js b/test/configCases/sharing/consume-self-reference/node_modules/my-middleware/index.js new file mode 100644 index 00000000000..9d3799c10a3 --- /dev/null +++ b/test/configCases/sharing/consume-self-reference/node_modules/my-middleware/index.js @@ -0,0 +1,6 @@ +import { a } from "my-module/a"; +import { b } from "my-module/b"; + +export function m() { + return a() + b(); +} diff --git a/test/configCases/sharing/consume-self-reference/node_modules/my-middleware/package.json b/test/configCases/sharing/consume-self-reference/node_modules/my-middleware/package.json new file mode 100644 index 00000000000..857375d8323 --- /dev/null +++ b/test/configCases/sharing/consume-self-reference/node_modules/my-middleware/package.json @@ -0,0 +1,8 @@ +{ + "name": "my-middleware", + "type": "module", + "version": "2.3.4", + "dependencies": { + "my-module": "*" + } +} diff --git a/test/configCases/sharing/consume-self-reference/node_modules/my-module/a.js b/test/configCases/sharing/consume-self-reference/node_modules/my-module/a.js new file mode 100644 index 00000000000..32864f0a77f --- /dev/null +++ b/test/configCases/sharing/consume-self-reference/node_modules/my-module/a.js @@ -0,0 +1,3 @@ +export function a() { + return "A"; +} diff --git a/test/configCases/sharing/consume-self-reference/node_modules/my-module/b.js b/test/configCases/sharing/consume-self-reference/node_modules/my-module/b.js new file mode 100644 index 00000000000..a528f0acf55 --- /dev/null +++ b/test/configCases/sharing/consume-self-reference/node_modules/my-module/b.js @@ -0,0 +1,5 @@ +import { a } from "my-module/a"; + +export function b() { + return "B" + a(); +} diff --git a/test/configCases/sharing/consume-self-reference/node_modules/my-module/package.json b/test/configCases/sharing/consume-self-reference/node_modules/my-module/package.json new file mode 100644 index 00000000000..487a24abd22 --- /dev/null +++ b/test/configCases/sharing/consume-self-reference/node_modules/my-module/package.json @@ -0,0 +1,9 @@ +{ + "name": "my-module", + "type": "module", + "version": "1.2.3", + "exports": { + "./a": "./a.js", + "./b": "./b.js" + } +} diff --git a/test/configCases/sharing/consume-self-reference/package.json b/test/configCases/sharing/consume-self-reference/package.json new file mode 100644 index 00000000000..dfee3b48973 --- /dev/null +++ b/test/configCases/sharing/consume-self-reference/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "my-middleware": "^2.3.0" + } +} diff --git a/test/configCases/sharing/consume-self-reference/webpack.config.js b/test/configCases/sharing/consume-self-reference/webpack.config.js new file mode 100644 index 00000000000..7cf4c9cfe33 --- /dev/null +++ b/test/configCases/sharing/consume-self-reference/webpack.config.js @@ -0,0 +1,26 @@ +// eslint-disable-next-line node/no-unpublished-require +const { SharePlugin } = require("../../../../").sharing; + +/** @type {import("../../../../").Configuration} */ +module.exports = { + plugins: [ + new SharePlugin({ + shared: { + "my-middleware": { + singleton: true + // import: false + }, + "my-module/a": { + singleton: true, + version: "1.2.3" + // import: false + }, + "my-module/b": { + singleton: true, + version: "1.2.3" + // import: false + } + } + }) + ] +};