diff --git a/crates/node_binding/binding.d.ts b/crates/node_binding/binding.d.ts index b40897b1e85..47b6924ff6e 100644 --- a/crates/node_binding/binding.d.ts +++ b/crates/node_binding/binding.d.ts @@ -1409,6 +1409,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 f39849721bc..4f3b7d25358 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 8ee6d900b17..d24850af7d6 100644 --- a/packages/rspack/etc/api.md +++ b/packages/rspack/etc/api.md @@ -2264,6 +2264,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; @@ -2272,6 +2273,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; @@ -2280,6 +2282,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; @@ -2342,6 +2345,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; @@ -2384,6 +2388,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; @@ -3338,6 +3343,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; @@ -3346,6 +3352,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; @@ -3354,6 +3361,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; @@ -9257,6 +9265,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; @@ -9265,6 +9274,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; @@ -9273,6 +9283,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; @@ -9335,6 +9346,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; @@ -9377,6 +9389,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; @@ -11545,6 +11558,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; @@ -12143,6 +12157,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 4d0a4a60fd0..11118256960 100644 --- a/packages/rspack/src/config/zod.ts +++ b/packages/rspack/src/config/zod.ts @@ -1331,6 +1331,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()