diff --git a/crates/node_binding/binding.d.ts b/crates/node_binding/binding.d.ts index 8d2531e0231..1dced73352e 100644 --- a/crates/node_binding/binding.d.ts +++ b/crates/node_binding/binding.d.ts @@ -1412,6 +1412,7 @@ export interface RawIncremental { emitAssets: boolean inferAsyncModules: boolean providedExports: boolean + collectModuleDiagnostics: boolean moduleHashes: boolean moduleCodegen: boolean moduleRuntimeRequirements: boolean diff --git a/crates/rspack_binding_options/src/options/mod.rs b/crates/rspack_binding_options/src/options/mod.rs index 85ab2ae0e86..4d376a52c93 100644 --- a/crates/rspack_binding_options/src/options/mod.rs +++ b/crates/rspack_binding_options/src/options/mod.rs @@ -81,6 +81,7 @@ impl TryFrom for CompilerOptions { emit_assets: value.emit_assets, infer_async_modules: value.infer_async_modules, provided_exports: value.provided_exports, + collect_module_diagnostics: value.collect_module_diagnostics, module_hashes: value.module_hashes, module_codegen: value.module_codegen, module_runtime_requirements: value.module_runtime_requirements, diff --git a/crates/rspack_binding_options/src/options/raw_experiments.rs b/crates/rspack_binding_options/src/options/raw_experiments.rs index 91f248be79c..08b9b5be48e 100644 --- a/crates/rspack_binding_options/src/options/raw_experiments.rs +++ b/crates/rspack_binding_options/src/options/raw_experiments.rs @@ -17,6 +17,7 @@ pub struct RawIncremental { pub emit_assets: bool, pub infer_async_modules: bool, pub provided_exports: bool, + pub collect_module_diagnostics: bool, pub module_hashes: bool, pub module_codegen: bool, pub module_runtime_requirements: bool, @@ -29,6 +30,7 @@ impl From for Incremental { emit_assets: value.emit_assets, infer_async_modules: value.infer_async_modules, provided_exports: value.provided_exports, + collect_module_diagnostics: value.collect_module_diagnostics, module_hashes: value.module_hashes, module_codegen: value.module_codegen, module_runtime_requirements: value.module_runtime_requirements, diff --git a/crates/rspack_core/src/compiler/compilation.rs b/crates/rspack_core/src/compiler/compilation.rs index cdf44e62f32..669eded6c03 100644 --- a/crates/rspack_core/src/compiler/compilation.rs +++ b/crates/rspack_core/src/compiler/compilation.rs @@ -168,6 +168,7 @@ pub struct Compilation { pub named_chunk_groups: HashMap, pub async_modules: IdentifierSet, + pub module_diagnostics: IdentifierMap, pub code_generation_results: CodeGenerationResults, pub cgm_hash_results: CgmHashResults, pub cgm_runtime_requirements_results: CgmRuntimeRequirementsResults, @@ -266,6 +267,7 @@ impl Compilation { named_chunk_groups: Default::default(), async_modules: Default::default(), + module_diagnostics: Default::default(), code_generation_results: Default::default(), cgm_hash_results: Default::default(), cgm_runtime_requirements_results: Default::default(), diff --git a/crates/rspack_core/src/options/experiments.rs b/crates/rspack_core/src/options/experiments.rs index 97086cc2903..f62e7c64c3e 100644 --- a/crates/rspack_core/src/options/experiments.rs +++ b/crates/rspack_core/src/options/experiments.rs @@ -18,6 +18,7 @@ pub enum Incremental { emit_assets: bool, infer_async_modules: bool, provided_exports: bool, + collect_module_diagnostics: bool, module_hashes: bool, module_codegen: bool, module_runtime_requirements: bool, @@ -45,6 +46,10 @@ impl Incremental { matches!(self, Incremental::Enabled { provided_exports, .. } if *provided_exports) } + pub fn collect_module_diagnostics_enabled(&self) -> bool { + matches!(self, Incremental::Enabled { collect_module_diagnostics, .. } if *collect_module_diagnostics) + } + pub fn module_hashes_enabled(&self) -> bool { matches!(self, Incremental::Enabled { module_hashes, .. } if *module_hashes) } diff --git a/packages/rspack-test-tools/src/case/new-incremental.ts b/packages/rspack-test-tools/src/case/new-incremental.ts index 3081a464e49..c39436e2f9a 100644 --- a/packages/rspack-test-tools/src/case/new-incremental.ts +++ b/packages/rspack-test-tools/src/case/new-incremental.ts @@ -87,6 +87,7 @@ const watchCreator = new BasicCaseCreator({ emitAssets: true, inferAsyncModules: true, providedExports: true, + collectModuleDiagnostics: true, moduleHashes: true, moduleCodegen: true, moduleRuntimeRequirements: true diff --git a/packages/rspack-test-tools/src/processor/hot-new-incremental.ts b/packages/rspack-test-tools/src/processor/hot-new-incremental.ts index 4967c58a6d2..0cd101442fd 100644 --- a/packages/rspack-test-tools/src/processor/hot-new-incremental.ts +++ b/packages/rspack-test-tools/src/processor/hot-new-incremental.ts @@ -55,6 +55,7 @@ export class HotNewIncrementalProcessor< emitAssets: true, inferAsyncModules: true, providedExports: true, + collectModuleDiagnostics: true, moduleHashes: true, moduleCodegen: true, moduleRuntimeRequirements: true diff --git a/packages/rspack/etc/api.md b/packages/rspack/etc/api.md index be4522bf1c3..8cec3fee690 100644 --- a/packages/rspack/etc/api.md +++ b/packages/rspack/etc/api.md @@ -2189,6 +2189,7 @@ const experiments_2: z.ZodObject<{ emitAssets: z.ZodOptional; inferAsyncModules: z.ZodOptional; providedExports: z.ZodOptional; + collectModuleDiagnostics: z.ZodOptional; moduleHashes: z.ZodOptional; moduleCodegen: z.ZodOptional; moduleRuntimeRequirements: z.ZodOptional; @@ -2197,6 +2198,7 @@ const experiments_2: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; + collectModuleDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -2205,6 +2207,7 @@ const experiments_2: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; + collectModuleDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -2267,6 +2270,7 @@ const experiments_2: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; + collectModuleDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -2309,6 +2313,7 @@ const experiments_2: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; + collectModuleDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -3230,6 +3235,7 @@ const incremental: z.ZodObject<{ emitAssets: z.ZodOptional; inferAsyncModules: z.ZodOptional; providedExports: z.ZodOptional; + collectModuleDiagnostics: z.ZodOptional; moduleHashes: z.ZodOptional; moduleCodegen: z.ZodOptional; moduleRuntimeRequirements: z.ZodOptional; @@ -3238,6 +3244,7 @@ const incremental: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; + collectModuleDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -3246,6 +3253,7 @@ const incremental: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; + collectModuleDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -8804,6 +8812,7 @@ export const rspackOptions: z.ZodObject<{ emitAssets: z.ZodOptional; inferAsyncModules: z.ZodOptional; providedExports: z.ZodOptional; + collectModuleDiagnostics: z.ZodOptional; moduleHashes: z.ZodOptional; moduleCodegen: z.ZodOptional; moduleRuntimeRequirements: z.ZodOptional; @@ -8812,6 +8821,7 @@ export const rspackOptions: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; + collectModuleDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -8820,6 +8830,7 @@ export const rspackOptions: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; + collectModuleDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -8882,6 +8893,7 @@ export const rspackOptions: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; + collectModuleDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -8924,6 +8936,7 @@ export const rspackOptions: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; + collectModuleDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -11092,6 +11105,7 @@ export const rspackOptions: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; + collectModuleDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -11690,6 +11704,7 @@ export const rspackOptions: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; + collectModuleDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; diff --git a/packages/rspack/src/config/adapter.ts b/packages/rspack/src/config/adapter.ts index f00c088dc48..d31e606d877 100644 --- a/packages/rspack/src/config/adapter.ts +++ b/packages/rspack/src/config/adapter.ts @@ -907,6 +907,7 @@ function getRawIncremental( emitAssets: incremental.emitAssets!, inferAsyncModules: incremental.inferAsyncModules!, providedExports: incremental.providedExports!, + collectModuleDiagnostics: incremental.collectModuleDiagnostics!, moduleHashes: incremental.moduleHashes!, moduleCodegen: incremental.moduleCodegen!, moduleRuntimeRequirements: incremental.moduleRuntimeRequirements! diff --git a/packages/rspack/src/config/defaults.ts b/packages/rspack/src/config/defaults.ts index 11f18968572..987c6d4b0d8 100644 --- a/packages/rspack/src/config/defaults.ts +++ b/packages/rspack/src/config/defaults.ts @@ -208,6 +208,7 @@ const applyExperimentsDefaults = (experiments: ExperimentsNormalized) => { D(experiments.incremental, "emitAssets", true); D(experiments.incremental, "inferAsyncModules", false); D(experiments.incremental, "providedExports", false); + D(experiments.incremental, "collectModuleDiagnostics", false); D(experiments.incremental, "moduleHashes", false); D(experiments.incremental, "moduleCodegen", false); D(experiments.incremental, "moduleRuntimeRequirements", false); diff --git a/packages/rspack/src/config/zod.ts b/packages/rspack/src/config/zod.ts index 33ed7fed3ac..cb62ca70879 100644 --- a/packages/rspack/src/config/zod.ts +++ b/packages/rspack/src/config/zod.ts @@ -1305,6 +1305,7 @@ const incremental = z.strictObject({ emitAssets: z.boolean().optional(), inferAsyncModules: z.boolean().optional(), providedExports: z.boolean().optional(), + collectModuleDiagnostics: z.boolean().optional(), moduleHashes: z.boolean().optional(), moduleCodegen: z.boolean().optional(), moduleRuntimeRequirements: z.boolean().optional()