From bfc879970dd8608d03f3f6a7ef7107ba024aa335 Mon Sep 17 00:00:00 2001 From: ahabhgk Date: Tue, 15 Oct 2024 16:24:24 +0800 Subject: [PATCH 1/5] wip --- crates/node_binding/binding.d.ts | 1 + crates/rspack_binding_options/src/options/mod.rs | 1 + .../src/options/raw_experiments.rs | 2 ++ crates/rspack_core/src/compiler/compilation.rs | 2 ++ crates/rspack_core/src/options/experiments.rs | 5 +++++ .../rspack-test-tools/src/case/new-incremental.ts | 1 + .../src/processor/hot-new-incremental.ts | 1 + packages/rspack/etc/core.api.md | 15 +++++++++++++++ packages/rspack/src/config/adapter.ts | 1 + packages/rspack/src/config/defaults.ts | 1 + packages/rspack/src/config/zod.ts | 1 + 11 files changed, 31 insertions(+) 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/core.api.md b/packages/rspack/etc/core.api.md index 2342f2a1920..fe465706737 100644 --- a/packages/rspack/etc/core.api.md +++ b/packages/rspack/etc/core.api.md @@ -1848,6 +1848,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; @@ -1856,6 +1857,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; @@ -1864,6 +1866,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; @@ -1926,6 +1929,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; @@ -1968,6 +1972,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; @@ -2673,6 +2678,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; @@ -2681,6 +2687,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; @@ -2689,6 +2696,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; @@ -6304,6 +6312,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; @@ -6312,6 +6321,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; @@ -6320,6 +6330,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; @@ -6382,6 +6393,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; @@ -6424,6 +6436,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; @@ -8592,6 +8605,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; @@ -9190,6 +9204,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 8662b131f84..a540049e57f 100644 --- a/packages/rspack/src/config/zod.ts +++ b/packages/rspack/src/config/zod.ts @@ -1246,6 +1246,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() From 9e9dccc523e51fef6c92959d323c4873a5ec5c0d Mon Sep 17 00:00:00 2001 From: ahabhgk Date: Wed, 16 Oct 2024 20:42:07 +0800 Subject: [PATCH 2/5] ok --- crates/node_binding/binding.d.ts | 2 +- .../rspack_binding_options/src/options/mod.rs | 2 +- .../src/options/raw_experiments.rs | 4 +- .../rspack_core/src/compiler/compilation.rs | 69 ++++++++++++++++--- crates/rspack_core/src/compiler/hmr.rs | 4 ++ crates/rspack_core/src/compiler/make/mod.rs | 16 ++++- .../src/compiler/module_executor/mod.rs | 7 ++ crates/rspack_core/src/options/experiments.rs | 6 +- .../src/unaffected_cache/mutations.rs | 2 +- .../src/case/new-incremental.ts | 2 +- .../src/processor/hot-new-incremental.ts | 2 +- .../rspack-test-tools/src/processor/watch.ts | 65 ++++++++++++++++- .../revoked-modules/0/bad.js | 3 + .../revoked-modules/0/good.js | 1 + .../revoked-modules/0/index.js | 5 ++ .../revoked-modules/0/value.js | 1 + .../revoked-modules/1/index.js | 5 ++ .../revoked-modules/1/warnings.js | 3 + .../revoked-modules/2/index.js | 5 ++ packages/rspack/etc/core.api.md | 30 ++++---- packages/rspack/src/config/adapter.ts | 2 +- packages/rspack/src/config/defaults.ts | 2 +- packages/rspack/src/config/zod.ts | 2 +- 23 files changed, 198 insertions(+), 42 deletions(-) create mode 100644 packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/0/bad.js create mode 100644 packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/0/good.js create mode 100644 packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/0/index.js create mode 100644 packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/0/value.js create mode 100644 packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/1/index.js create mode 100644 packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/1/warnings.js create mode 100644 packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/2/index.js diff --git a/crates/node_binding/binding.d.ts b/crates/node_binding/binding.d.ts index 1dced73352e..b1f466b1505 100644 --- a/crates/node_binding/binding.d.ts +++ b/crates/node_binding/binding.d.ts @@ -1412,7 +1412,7 @@ export interface RawIncremental { emitAssets: boolean inferAsyncModules: boolean providedExports: boolean - collectModuleDiagnostics: boolean + collectModulesDiagnostics: 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 4d376a52c93..990a7b6c05e 100644 --- a/crates/rspack_binding_options/src/options/mod.rs +++ b/crates/rspack_binding_options/src/options/mod.rs @@ -81,7 +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, + collect_modules_diagnostics: value.collect_modules_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 08b9b5be48e..f17171c1e64 100644 --- a/crates/rspack_binding_options/src/options/raw_experiments.rs +++ b/crates/rspack_binding_options/src/options/raw_experiments.rs @@ -17,7 +17,7 @@ pub struct RawIncremental { pub emit_assets: bool, pub infer_async_modules: bool, pub provided_exports: bool, - pub collect_module_diagnostics: bool, + pub collect_modules_diagnostics: bool, pub module_hashes: bool, pub module_codegen: bool, pub module_runtime_requirements: bool, @@ -30,7 +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, + collect_modules_diagnostics: value.collect_modules_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 669eded6c03..bb48fc8e368 100644 --- a/crates/rspack_core/src/compiler/compilation.rs +++ b/crates/rspack_core/src/compiler/compilation.rs @@ -168,7 +168,7 @@ pub struct Compilation { pub named_chunk_groups: HashMap, pub async_modules: IdentifierSet, - pub module_diagnostics: IdentifierMap, + pub modules_diagnostics: IdentifierMap>, pub code_generation_results: CodeGenerationResults, pub cgm_hash_results: CgmHashResults, pub cgm_runtime_requirements_results: CgmRuntimeRequirementsResults, @@ -267,7 +267,7 @@ impl Compilation { named_chunk_groups: Default::default(), async_modules: Default::default(), - module_diagnostics: Default::default(), + modules_diagnostics: Default::default(), code_generation_results: Default::default(), cgm_hash_results: Default::default(), cgm_runtime_requirements_results: Default::default(), @@ -1073,8 +1073,17 @@ impl Compilation { )], )?; + if let Some(mutations) = &mut self.mutations + && let Some(make_mutations) = self.make_artifact.take_mutations() + { + mutations.extend(make_mutations); + } + let incremental = self.options.incremental(); - if incremental.infer_async_modules_enabled() || incremental.provided_exports_enabled() { + if incremental.infer_async_modules_enabled() + || incremental.provided_exports_enabled() + || incremental.collect_modules_diagnostics_enabled() + { self .unaffected_modules_cache .compute_affected_modules_with_module_graph(self); @@ -1089,7 +1098,7 @@ impl Compilation { logger.time_end(start); // Collect dependencies diagnostics at here to make sure: // 1. after finish_modules: has provide exports info - // 2. before optimize dependencies: side effects free module hasn't been skipped (move_target) + // 2. before optimize dependencies: side effects free module hasn't been skipped self.collect_dependencies_diagnostics(); // take make diagnostics @@ -1112,16 +1121,54 @@ impl Compilation { #[tracing::instrument(skip_all)] fn collect_dependencies_diagnostics(&mut self) { + let incremental = self + .options + .incremental() + .collect_modules_diagnostics_enabled(); + let modules = if incremental { + if let Some(mutations) = &self.mutations { + let revoked_modules = mutations.iter().filter_map(|mutation| match mutation { + Mutation::ModuleRevoke { module } => Some(*module), + _ => None, + }); + for revoked_module in revoked_modules { + self.modules_diagnostics.remove(&revoked_module); + } + } + self + .unaffected_modules_cache + .get_affected_modules_with_module_graph() + .lock() + .expect("should lock") + .clone() + } else { + let module_graph = self.get_module_graph(); + module_graph.modules().keys().copied().collect() + }; let module_graph = self.get_module_graph(); - let diagnostics: Vec<_> = module_graph - .module_graph_modules() + let modules_diagnostics: IdentifierMap> = modules .par_iter() - .flat_map(|(_, mgm)| &mgm.all_dependencies) - .filter_map(|dependency_id| module_graph.dependency_by_id(dependency_id)) - .filter_map(|dependency| dependency.get_diagnostics(&module_graph)) - .flat_map(|ds| ds) + .map(|module_identifier| { + let mgm = module_graph + .module_graph_module_by_identifier(module_identifier) + .expect("should have mgm"); + let diagnostics = mgm + .all_dependencies + .iter() + .filter_map(|dependency_id| module_graph.dependency_by_id(dependency_id)) + .filter_map(|dependency| dependency.get_diagnostics(&module_graph)) + .flat_map(|ds| ds) + .collect::>(); + (*module_identifier, diagnostics) + }) .collect(); - self.extend_diagnostics(diagnostics); + let all_modules_diagnostics = if incremental { + self.modules_diagnostics.extend(modules_diagnostics); + self.modules_diagnostics.clone() + } else { + modules_diagnostics + }; + self.extend_diagnostics(all_modules_diagnostics.into_values().flat_map(|ds| ds)); } #[instrument(name = "compilation:seal", skip_all)] diff --git a/crates/rspack_core/src/compiler/hmr.rs b/crates/rspack_core/src/compiler/hmr.rs index e4a644879bb..21c80e386c1 100644 --- a/crates/rspack_core/src/compiler/hmr.rs +++ b/crates/rspack_core/src/compiler/hmr.rs @@ -97,6 +97,10 @@ impl Compiler { if incremental.infer_async_modules_enabled() { new_compilation.async_modules = std::mem::take(&mut self.compilation.async_modules); } + if incremental.collect_modules_diagnostics_enabled() { + new_compilation.modules_diagnostics = + std::mem::take(&mut self.compilation.modules_diagnostics); + } if incremental.module_hashes_enabled() { new_compilation.cgm_hash_results = std::mem::take(&mut self.compilation.cgm_hash_results); } diff --git a/crates/rspack_core/src/compiler/make/mod.rs b/crates/rspack_core/src/compiler/make/mod.rs index d4497dea0ff..9172374d2a8 100644 --- a/crates/rspack_core/src/compiler/make/mod.rs +++ b/crates/rspack_core/src/compiler/make/mod.rs @@ -9,8 +9,9 @@ use rustc_hash::FxHashSet as HashSet; use self::{cutout::Cutout, repair::repair}; use crate::{ - utils::FileCounter, BuildDependency, Compilation, DependencyId, ModuleGraph, ModuleGraphPartial, - ModuleIdentifier, + unaffected_cache::{Mutation, Mutations}, + utils::FileCounter, + BuildDependency, Compilation, DependencyId, ModuleGraph, ModuleGraphPartial, ModuleIdentifier, }; #[derive(Debug, Default)] @@ -19,6 +20,7 @@ pub struct MakeArtifact { // should be reset when rebuild pub diagnostics: Vec, pub has_module_graph_change: bool, + pub mutations: Option, // data pub built_modules: IdentifierSet, @@ -48,6 +50,10 @@ impl MakeArtifact { &mut self.module_graph_partial } + pub fn take_mutations(&mut self) -> Option { + std::mem::take(&mut self.mutations) + } + pub fn take_diagnostics(&mut self) -> Vec { std::mem::take(&mut self.diagnostics) } @@ -75,6 +81,11 @@ impl MakeArtifact { .build_dependencies .remove_batch_file(&build_info.build_dependencies); } + if let Some(mutations) = &mut self.mutations { + mutations.add(Mutation::ModuleRevoke { + module: *module_identifier, + }); + } module_graph.revoke_module(module_identifier) } @@ -133,6 +144,7 @@ pub fn make_module_graph( // reset temporary data artifact.built_modules = Default::default(); artifact.diagnostics = Default::default(); + artifact.mutations = compilation.mutations.is_some().then(|| Default::default()); artifact.has_module_graph_change = false; artifact = update_module_graph(compilation, artifact, params)?; diff --git a/crates/rspack_core/src/compiler/module_executor/mod.rs b/crates/rspack_core/src/compiler/module_executor/mod.rs index 5c4272324e4..626c235bdb3 100644 --- a/crates/rspack_core/src/compiler/module_executor/mod.rs +++ b/crates/rspack_core/src/compiler/module_executor/mod.rs @@ -60,6 +60,7 @@ impl ModuleExecutor { params.push(MakeParam::ForceBuildModules(modules)); } make_artifact.diagnostics = Default::default(); + make_artifact.mutations = compilation.mutations.is_some().then(|| Default::default()); make_artifact.has_module_graph_change = false; make_artifact = update_module_graph(compilation, make_artifact, params).unwrap_or_default(); @@ -134,6 +135,12 @@ impl ModuleExecutor { let diagnostics = self.make_artifact.take_diagnostics(); compilation.extend_diagnostics(diagnostics); + if let Some(mutations) = &mut compilation.mutations + && let Some(make_mutations) = self.make_artifact.take_mutations() + { + mutations.extend(make_mutations); + } + let built_modules = self.make_artifact.take_built_modules(); for id in built_modules { compilation.built_modules.insert(id); diff --git a/crates/rspack_core/src/options/experiments.rs b/crates/rspack_core/src/options/experiments.rs index f62e7c64c3e..b055cfeec41 100644 --- a/crates/rspack_core/src/options/experiments.rs +++ b/crates/rspack_core/src/options/experiments.rs @@ -18,7 +18,7 @@ pub enum Incremental { emit_assets: bool, infer_async_modules: bool, provided_exports: bool, - collect_module_diagnostics: bool, + collect_modules_diagnostics: bool, module_hashes: bool, module_codegen: bool, module_runtime_requirements: bool, @@ -46,8 +46,8 @@ 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 collect_modules_diagnostics_enabled(&self) -> bool { + matches!(self, Incremental::Enabled { collect_modules_diagnostics, .. } if *collect_modules_diagnostics) } pub fn module_hashes_enabled(&self) -> bool { diff --git a/crates/rspack_core/src/unaffected_cache/mutations.rs b/crates/rspack_core/src/unaffected_cache/mutations.rs index 33076e39fd0..52b7ced8c5f 100644 --- a/crates/rspack_core/src/unaffected_cache/mutations.rs +++ b/crates/rspack_core/src/unaffected_cache/mutations.rs @@ -7,8 +7,8 @@ pub struct Mutations { #[derive(Debug)] pub enum Mutation { + ModuleRevoke { module: ModuleIdentifier }, ModuleSetAsync { module: ModuleIdentifier }, - PlaceholderForExtendable, } impl Mutations { diff --git a/packages/rspack-test-tools/src/case/new-incremental.ts b/packages/rspack-test-tools/src/case/new-incremental.ts index c39436e2f9a..9e61562a989 100644 --- a/packages/rspack-test-tools/src/case/new-incremental.ts +++ b/packages/rspack-test-tools/src/case/new-incremental.ts @@ -87,7 +87,7 @@ const watchCreator = new BasicCaseCreator({ emitAssets: true, inferAsyncModules: true, providedExports: true, - collectModuleDiagnostics: true, + collectModulesDiagnostics: 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 0cd101442fd..8f8751c444b 100644 --- a/packages/rspack-test-tools/src/processor/hot-new-incremental.ts +++ b/packages/rspack-test-tools/src/processor/hot-new-incremental.ts @@ -55,7 +55,7 @@ export class HotNewIncrementalProcessor< emitAssets: true, inferAsyncModules: true, providedExports: true, - collectModuleDiagnostics: true, + collectModulesDiagnostics: true, moduleHashes: true, moduleCodegen: true, moduleRuntimeRequirements: true diff --git a/packages/rspack-test-tools/src/processor/watch.ts b/packages/rspack-test-tools/src/processor/watch.ts index f0e65c6b594..6d33e01bef7 100644 --- a/packages/rspack-test-tools/src/processor/watch.ts +++ b/packages/rspack-test-tools/src/processor/watch.ts @@ -4,6 +4,7 @@ import { merge } from "webpack-merge"; import { ECompilerEvent } from "../compiler"; import { readConfigFile } from "../helper"; +import checkArrayExpectation from "../helper/legacy/checkArrayExpectation"; import copyDiff from "../helper/legacy/copyDiff"; import type { ECompilerType, @@ -82,7 +83,69 @@ export class WatchProcessor< } async check(env: ITestEnv, context: ITestContext) { - await super.check(env, context); + const testConfig = context.getTestConfig(); + if (testConfig.noTest) return; + + const errors: Array<{ message: string; stack?: string }> = ( + context.getError(this._options.name) || [] + ).map(e => ({ + message: e.message, + stack: e.stack + })); + const warnings: Array<{ message: string; stack?: string }> = []; + const compiler = this.getCompiler(context); + const stats = compiler.getStats(); + if (stats) { + fs.writeFileSync( + path.join(context.getDist(), "stats.txt"), + stats.toString({ + preset: "verbose", + colors: false + }), + "utf-8" + ); + const jsonStats = stats.toJson({ + errorDetails: true + }); + fs.writeFileSync( + path.join(context.getDist(), "stats.json"), + JSON.stringify(jsonStats, null, 2), + "utf-8" + ); + if (jsonStats.errors) { + errors.push(...jsonStats.errors); + } + if (jsonStats.warnings) { + warnings.push(...jsonStats.warnings); + } + } + await new Promise((resolve, reject) => { + checkArrayExpectation( + path.join(context.getSource(), this._watchOptions.stepName), + { errors }, + "error", + "Error", + reject + ); + resolve(); + }); + + await new Promise((resolve, reject) => { + checkArrayExpectation( + path.join(context.getSource(), this._watchOptions.stepName), + { warnings }, + "warning", + "Warning", + reject + ); + resolve(); + }); + + // clear error if checked + if (fs.existsSync(context.getSource("errors.js"))) { + context.clearError(this._options.name); + } + // check hash fs.renameSync( path.join(context.getDist(), "stats.txt"), diff --git a/packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/0/bad.js b/packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/0/bad.js new file mode 100644 index 00000000000..d884ef9be94 --- /dev/null +++ b/packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/0/bad.js @@ -0,0 +1,3 @@ +import { notExist } from "./value" + +export const value = notExist; diff --git a/packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/0/good.js b/packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/0/good.js new file mode 100644 index 00000000000..a07bf4d71e2 --- /dev/null +++ b/packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/0/good.js @@ -0,0 +1 @@ +export * from "./value" diff --git a/packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/0/index.js b/packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/0/index.js new file mode 100644 index 00000000000..63c47790eb6 --- /dev/null +++ b/packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/0/index.js @@ -0,0 +1,5 @@ +import { value } from "./good"; + +it("should have correct value", () => { + expect(value).toBe(1); +}); diff --git a/packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/0/value.js b/packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/0/value.js new file mode 100644 index 00000000000..efeee5db16c --- /dev/null +++ b/packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/0/value.js @@ -0,0 +1 @@ +export const value = 1; diff --git a/packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/1/index.js b/packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/1/index.js new file mode 100644 index 00000000000..823f73a25de --- /dev/null +++ b/packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/1/index.js @@ -0,0 +1,5 @@ +import { value } from "./bad"; + +it("should have correct value", () => { + expect(value).toBe(undefined); +}); diff --git a/packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/1/warnings.js b/packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/1/warnings.js new file mode 100644 index 00000000000..7b699768a4e --- /dev/null +++ b/packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/1/warnings.js @@ -0,0 +1,3 @@ +module.exports = [ + /export 'notExist' \(imported as 'notExist'\) was not found in '\.\/value'/, +]; diff --git a/packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/2/index.js b/packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/2/index.js new file mode 100644 index 00000000000..63c47790eb6 --- /dev/null +++ b/packages/rspack-test-tools/tests/watchCases/collect-modules-diagnostics/revoked-modules/2/index.js @@ -0,0 +1,5 @@ +import { value } from "./good"; + +it("should have correct value", () => { + expect(value).toBe(1); +}); diff --git a/packages/rspack/etc/core.api.md b/packages/rspack/etc/core.api.md index fe465706737..facb6f55417 100644 --- a/packages/rspack/etc/core.api.md +++ b/packages/rspack/etc/core.api.md @@ -1848,7 +1848,7 @@ const experiments_2: z.ZodObject<{ emitAssets: z.ZodOptional; inferAsyncModules: z.ZodOptional; providedExports: z.ZodOptional; - collectModuleDiagnostics: z.ZodOptional; + collectModulesDiagnostics: z.ZodOptional; moduleHashes: z.ZodOptional; moduleCodegen: z.ZodOptional; moduleRuntimeRequirements: z.ZodOptional; @@ -1857,7 +1857,7 @@ const experiments_2: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; - collectModuleDiagnostics?: boolean | undefined; + collectModulesDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -1866,7 +1866,7 @@ const experiments_2: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; - collectModuleDiagnostics?: boolean | undefined; + collectModulesDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -1929,7 +1929,7 @@ const experiments_2: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; - collectModuleDiagnostics?: boolean | undefined; + collectModulesDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -1972,7 +1972,7 @@ const experiments_2: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; - collectModuleDiagnostics?: boolean | undefined; + collectModulesDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -2678,7 +2678,7 @@ const incremental: z.ZodObject<{ emitAssets: z.ZodOptional; inferAsyncModules: z.ZodOptional; providedExports: z.ZodOptional; - collectModuleDiagnostics: z.ZodOptional; + collectModulesDiagnostics: z.ZodOptional; moduleHashes: z.ZodOptional; moduleCodegen: z.ZodOptional; moduleRuntimeRequirements: z.ZodOptional; @@ -2687,7 +2687,7 @@ const incremental: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; - collectModuleDiagnostics?: boolean | undefined; + collectModulesDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -2696,7 +2696,7 @@ const incremental: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; - collectModuleDiagnostics?: boolean | undefined; + collectModulesDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -6312,7 +6312,7 @@ export const rspackOptions: z.ZodObject<{ emitAssets: z.ZodOptional; inferAsyncModules: z.ZodOptional; providedExports: z.ZodOptional; - collectModuleDiagnostics: z.ZodOptional; + collectModulesDiagnostics: z.ZodOptional; moduleHashes: z.ZodOptional; moduleCodegen: z.ZodOptional; moduleRuntimeRequirements: z.ZodOptional; @@ -6321,7 +6321,7 @@ export const rspackOptions: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; - collectModuleDiagnostics?: boolean | undefined; + collectModulesDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -6330,7 +6330,7 @@ export const rspackOptions: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; - collectModuleDiagnostics?: boolean | undefined; + collectModulesDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -6393,7 +6393,7 @@ export const rspackOptions: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; - collectModuleDiagnostics?: boolean | undefined; + collectModulesDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -6436,7 +6436,7 @@ export const rspackOptions: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; - collectModuleDiagnostics?: boolean | undefined; + collectModulesDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -8605,7 +8605,7 @@ export const rspackOptions: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; - collectModuleDiagnostics?: boolean | undefined; + collectModulesDiagnostics?: boolean | undefined; moduleHashes?: boolean | undefined; moduleCodegen?: boolean | undefined; moduleRuntimeRequirements?: boolean | undefined; @@ -9204,7 +9204,7 @@ export const rspackOptions: z.ZodObject<{ providedExports?: boolean | undefined; emitAssets?: boolean | undefined; inferAsyncModules?: boolean | undefined; - collectModuleDiagnostics?: boolean | undefined; + collectModulesDiagnostics?: 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 d31e606d877..5106b068add 100644 --- a/packages/rspack/src/config/adapter.ts +++ b/packages/rspack/src/config/adapter.ts @@ -907,7 +907,7 @@ function getRawIncremental( emitAssets: incremental.emitAssets!, inferAsyncModules: incremental.inferAsyncModules!, providedExports: incremental.providedExports!, - collectModuleDiagnostics: incremental.collectModuleDiagnostics!, + collectModulesDiagnostics: incremental.collectModulesDiagnostics!, 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 987c6d4b0d8..8598412b7c3 100644 --- a/packages/rspack/src/config/defaults.ts +++ b/packages/rspack/src/config/defaults.ts @@ -208,7 +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, "collectModulesDiagnostics", 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 a540049e57f..f24c754a5c0 100644 --- a/packages/rspack/src/config/zod.ts +++ b/packages/rspack/src/config/zod.ts @@ -1246,7 +1246,7 @@ const incremental = z.strictObject({ emitAssets: z.boolean().optional(), inferAsyncModules: z.boolean().optional(), providedExports: z.boolean().optional(), - collectModuleDiagnostics: z.boolean().optional(), + collectModulesDiagnostics: z.boolean().optional(), moduleHashes: z.boolean().optional(), moduleCodegen: z.boolean().optional(), moduleRuntimeRequirements: z.boolean().optional() From 36c8d468420e95a399422c68aad5081ac5af5b86 Mon Sep 17 00:00:00 2001 From: ahabhgk Date: Thu, 17 Oct 2024 14:44:15 +0800 Subject: [PATCH 3/5] fix --- crates/rspack_core/src/compiler/compilation.rs | 4 ++-- crates/rspack_core/src/compiler/make/mod.rs | 2 +- crates/rspack_core/src/compiler/module_executor/mod.rs | 2 +- .../tests/__snapshots__/Defaults.test.js.snap | 1 + 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/crates/rspack_core/src/compiler/compilation.rs b/crates/rspack_core/src/compiler/compilation.rs index bb48fc8e368..dea433bfcbe 100644 --- a/crates/rspack_core/src/compiler/compilation.rs +++ b/crates/rspack_core/src/compiler/compilation.rs @@ -1157,7 +1157,7 @@ impl Compilation { .iter() .filter_map(|dependency_id| module_graph.dependency_by_id(dependency_id)) .filter_map(|dependency| dependency.get_diagnostics(&module_graph)) - .flat_map(|ds| ds) + .flatten() .collect::>(); (*module_identifier, diagnostics) }) @@ -1168,7 +1168,7 @@ impl Compilation { } else { modules_diagnostics }; - self.extend_diagnostics(all_modules_diagnostics.into_values().flat_map(|ds| ds)); + self.extend_diagnostics(all_modules_diagnostics.into_values().flatten()); } #[instrument(name = "compilation:seal", skip_all)] diff --git a/crates/rspack_core/src/compiler/make/mod.rs b/crates/rspack_core/src/compiler/make/mod.rs index 9172374d2a8..0936ffb9329 100644 --- a/crates/rspack_core/src/compiler/make/mod.rs +++ b/crates/rspack_core/src/compiler/make/mod.rs @@ -144,7 +144,7 @@ pub fn make_module_graph( // reset temporary data artifact.built_modules = Default::default(); artifact.diagnostics = Default::default(); - artifact.mutations = compilation.mutations.is_some().then(|| Default::default()); + artifact.mutations = compilation.mutations.is_some().then(Default::default); artifact.has_module_graph_change = false; artifact = update_module_graph(compilation, artifact, params)?; diff --git a/crates/rspack_core/src/compiler/module_executor/mod.rs b/crates/rspack_core/src/compiler/module_executor/mod.rs index 626c235bdb3..b403d8a6644 100644 --- a/crates/rspack_core/src/compiler/module_executor/mod.rs +++ b/crates/rspack_core/src/compiler/module_executor/mod.rs @@ -60,7 +60,7 @@ impl ModuleExecutor { params.push(MakeParam::ForceBuildModules(modules)); } make_artifact.diagnostics = Default::default(); - make_artifact.mutations = compilation.mutations.is_some().then(|| Default::default()); + make_artifact.mutations = compilation.mutations.is_some().then(Default::default); make_artifact.has_module_graph_change = false; make_artifact = update_module_graph(compilation, make_artifact, params).unwrap_or_default(); diff --git a/packages/rspack-test-tools/tests/__snapshots__/Defaults.test.js.snap b/packages/rspack-test-tools/tests/__snapshots__/Defaults.test.js.snap index 4efaad11249..13aa4687c17 100644 --- a/packages/rspack-test-tools/tests/__snapshots__/Defaults.test.js.snap +++ b/packages/rspack-test-tools/tests/__snapshots__/Defaults.test.js.snap @@ -20,6 +20,7 @@ Object { "css": undefined, "futureDefaults": false, "incremental": Object { + "collectModulesDiagnostics": false, "emitAssets": true, "inferAsyncModules": false, "make": true, From e299d3507042a7239512e2d8f4f8566f714daae0 Mon Sep 17 00:00:00 2001 From: ahabhgk Date: Thu, 17 Oct 2024 14:56:56 +0800 Subject: [PATCH 4/5] fix --- packages/rspack-test-tools/etc/test-tools.api.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/rspack-test-tools/etc/test-tools.api.md b/packages/rspack-test-tools/etc/test-tools.api.md index 7e35aa64f14..fe97da614fe 100644 --- a/packages/rspack-test-tools/etc/test-tools.api.md +++ b/packages/rspack-test-tools/etc/test-tools.api.md @@ -4,6 +4,10 @@ ```ts +/// +/// +/// + import type { Compiler } from '@rspack/core'; import type { Compiler as Compiler_2 } from 'webpack'; import type { Configuration } from 'webpack'; From df27ab521072a15e99003049679c003ca01fdbc3 Mon Sep 17 00:00:00 2001 From: ahabhgk Date: Thu, 17 Oct 2024 15:16:13 +0800 Subject: [PATCH 5/5] fix --- packages/rspack-test-tools/etc/test-tools.api.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/rspack-test-tools/etc/test-tools.api.md b/packages/rspack-test-tools/etc/test-tools.api.md index fe97da614fe..7e35aa64f14 100644 --- a/packages/rspack-test-tools/etc/test-tools.api.md +++ b/packages/rspack-test-tools/etc/test-tools.api.md @@ -4,10 +4,6 @@ ```ts -/// -/// -/// - import type { Compiler } from '@rspack/core'; import type { Compiler as Compiler_2 } from 'webpack'; import type { Configuration } from 'webpack';