From b56c8dd8c92a3ae2653458a5c24486ee5a673299 Mon Sep 17 00:00:00 2001 From: ahabhgk Date: Fri, 24 Jan 2025 12:59:38 +0800 Subject: [PATCH] fix: dll manifest zod validation --- .../dll/numeric-module-id/errors.js | 1 + .../configCases/dll/numeric-module-id/lib.js | 1 + .../configCases/dll/numeric-module-id/main.js | 5 +++ .../dll/numeric-module-id/rspack.config.js | 45 +++++++++++++++++++ packages/rspack/etc/core.api.md | 2 +- packages/rspack/src/lib/DllReferencePlugin.ts | 4 +- 6 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 packages/rspack-test-tools/tests/configCases/dll/numeric-module-id/errors.js create mode 100644 packages/rspack-test-tools/tests/configCases/dll/numeric-module-id/lib.js create mode 100644 packages/rspack-test-tools/tests/configCases/dll/numeric-module-id/main.js create mode 100644 packages/rspack-test-tools/tests/configCases/dll/numeric-module-id/rspack.config.js diff --git a/packages/rspack-test-tools/tests/configCases/dll/numeric-module-id/errors.js b/packages/rspack-test-tools/tests/configCases/dll/numeric-module-id/errors.js new file mode 100644 index 000000000000..e0a30c5dfa3e --- /dev/null +++ b/packages/rspack-test-tools/tests/configCases/dll/numeric-module-id/errors.js @@ -0,0 +1 @@ +module.exports = []; diff --git a/packages/rspack-test-tools/tests/configCases/dll/numeric-module-id/lib.js b/packages/rspack-test-tools/tests/configCases/dll/numeric-module-id/lib.js new file mode 100644 index 000000000000..483352ffbff8 --- /dev/null +++ b/packages/rspack-test-tools/tests/configCases/dll/numeric-module-id/lib.js @@ -0,0 +1 @@ +module.exports = typeof module.id; diff --git a/packages/rspack-test-tools/tests/configCases/dll/numeric-module-id/main.js b/packages/rspack-test-tools/tests/configCases/dll/numeric-module-id/main.js new file mode 100644 index 000000000000..6fb7b7379ba1 --- /dev/null +++ b/packages/rspack-test-tools/tests/configCases/dll/numeric-module-id/main.js @@ -0,0 +1,5 @@ +import t from "dll/lib"; + +it("module id should be number type", () => { + expect(t).toBe("number"); +}) diff --git a/packages/rspack-test-tools/tests/configCases/dll/numeric-module-id/rspack.config.js b/packages/rspack-test-tools/tests/configCases/dll/numeric-module-id/rspack.config.js new file mode 100644 index 000000000000..bb5aa34955c1 --- /dev/null +++ b/packages/rspack-test-tools/tests/configCases/dll/numeric-module-id/rspack.config.js @@ -0,0 +1,45 @@ +const rspack = require("@rspack/core"); +const path = require("path"); + +const dllManifest = path.resolve(__dirname, "../../../js/config/dll/numeric-module-id/manifest.json"); + +/** @type {import("@rspack/core").Configuration[]} */ +module.exports = [ + { + name: "create-dll", + entry: "./lib.js", + output: { + filename: "lib-dll.js", + library: { + type: "commonjs2", + }, + }, + optimization: { + moduleIds: 'deterministic', + chunkIds: 'deterministic', + }, + plugins: [ + new rspack.DllPlugin({ + path: dllManifest, + entryOnly: false, + }), + ] + }, + { + name: "use-dll", + dependencies: ["create-dll"], + entry: "./main.js", + plugins: [ + function (compiler) { + compiler.hooks.beforeRun.tap('test', () => { + new rspack.DllReferencePlugin({ + manifest: require(dllManifest), + sourceType: "commonjs2", + scope: "dll", + name: "./lib-dll.js", + }).apply(compiler) + }) + } + ] + } +] \ No newline at end of file diff --git a/packages/rspack/etc/core.api.md b/packages/rspack/etc/core.api.md index e5930c428552..2623055c6d41 100644 --- a/packages/rspack/etc/core.api.md +++ b/packages/rspack/etc/core.api.md @@ -1540,7 +1540,7 @@ export interface DllReferencePluginOptionsContent { [k: string]: { buildMeta?: JsBuildMeta; exports?: string[] | true; - id?: string; + id?: string | number; }; } diff --git a/packages/rspack/src/lib/DllReferencePlugin.ts b/packages/rspack/src/lib/DllReferencePlugin.ts index c312128fd694..01b2bdbfdc80 100644 --- a/packages/rspack/src/lib/DllReferencePlugin.ts +++ b/packages/rspack/src/lib/DllReferencePlugin.ts @@ -133,14 +133,14 @@ export interface DllReferencePluginOptionsContent { /** * Module ID. */ - id?: string; + id?: string | number; }; } const dllReferencePluginOptionsContentItem = z.object({ buildMeta: z.custom().optional(), exports: z.array(z.string()).or(z.literal(true)).optional(), - id: z.string().optional() + id: z.string().or(z.number()).optional() }); const dllReferencePluginOptionsContent = z.record(