diff --git a/turbopack/crates/turbopack-cli/src/build/mod.rs b/turbopack/crates/turbopack-cli/src/build/mod.rs index b7a77db6b0509..1a5bc0b3b0300 100644 --- a/turbopack/crates/turbopack-cli/src/build/mod.rs +++ b/turbopack/crates/turbopack-cli/src/build/mod.rs @@ -15,6 +15,7 @@ use turbo_tasks_backend::{ noop_backing_storage, BackendOptions, NoopBackingStorage, TurboTasksBackend, }; use turbo_tasks_fs::FileSystem; +use turbopack::global_module_ids::get_global_module_id_strategy; use turbopack_browser::BrowserChunkingContext; use turbopack_cli_utils::issue::{ConsoleUi, LogOptions}; use turbopack_core::{ @@ -199,47 +200,14 @@ async fn build_internal( NodeEnv::Production => RuntimeType::Production, }; - let chunking_context: Vc> = match target { - Target::Browser => { - let mut builder = BrowserChunkingContext::builder( + let compile_time_info = get_client_compile_time_info(browserslist_query.clone(), node_env); + let execution_context = ExecutionContext::new( + *root_path, + Vc::upcast( + NodeJsChunkingContext::builder( project_path, build_output_root, - ResolvedVc::cell(build_output_root_to_root_path), - build_output_root, - build_output_root, - build_output_root, - Environment::new(Value::new(ExecutionEnvironment::Browser( - BrowserEnvironment { - dom: true, - web_worker: false, - service_worker: false, - browserslist_query: browserslist_query.clone(), - } - .resolved_cell(), - ))) - .to_resolved() - .await?, - runtime_type, - ) - .minify_type(minify_type); - - match *node_env.await? { - NodeEnv::Development => {} - NodeEnv::Production => { - builder = builder.ecmascript_chunking_config(ChunkingConfig { - min_chunk_size: 20000, - ..Default::default() - }) - } - } - - Vc::upcast(builder.build()) - } - Target::Node => { - let mut builder = NodeJsChunkingContext::builder( - project_path, - build_output_root, - ResolvedVc::cell(build_output_root_to_root_path), + ResolvedVc::cell(build_output_root_to_root_path.clone()), build_output_root, build_output_root, build_output_root, @@ -250,25 +218,10 @@ async fn build_internal( .await?, runtime_type, ) - .minify_type(minify_type); - - match *node_env.await? { - NodeEnv::Development => {} - NodeEnv::Production => { - builder = builder.ecmascript_chunking_config(ChunkingConfig { - min_chunk_size: 20000, - ..Default::default() - }) - } - } - - Vc::upcast(builder.build()) - } - }; - - let compile_time_info = get_client_compile_time_info(browserslist_query, node_env); - let execution_context = - ExecutionContext::new(*root_path, chunking_context, load_env(*root_path)); + .build(), + ), + load_env(*root_path), + ); let asset_context = get_client_asset_context( *project_path, execution_context, @@ -322,6 +275,80 @@ async fn build_internal( .await?; let module_graph = ModuleGraph::from_modules(Vc::cell(entries.clone())); + let module_id_strategy = ResolvedVc::upcast( + get_global_module_id_strategy(module_graph) + .to_resolved() + .await?, + ); + + let chunking_context: Vc> = match target { + Target::Browser => { + let mut builder = BrowserChunkingContext::builder( + project_path, + build_output_root, + ResolvedVc::cell(build_output_root_to_root_path), + build_output_root, + build_output_root, + build_output_root, + Environment::new(Value::new(ExecutionEnvironment::Browser( + BrowserEnvironment { + dom: true, + web_worker: false, + service_worker: false, + browserslist_query, + } + .resolved_cell(), + ))) + .to_resolved() + .await?, + runtime_type, + ) + .module_id_strategy(module_id_strategy) + .minify_type(minify_type); + + match *node_env.await? { + NodeEnv::Development => {} + NodeEnv::Production => { + builder = builder.ecmascript_chunking_config(ChunkingConfig { + min_chunk_size: 20000, + ..Default::default() + }) + } + } + + Vc::upcast(builder.build()) + } + Target::Node => { + let mut builder = NodeJsChunkingContext::builder( + project_path, + build_output_root, + ResolvedVc::cell(build_output_root_to_root_path), + build_output_root, + build_output_root, + build_output_root, + Environment::new(Value::new(ExecutionEnvironment::NodeJsLambda( + NodeJsEnvironment::default().resolved_cell(), + ))) + .to_resolved() + .await?, + runtime_type, + ) + .module_id_strategy(module_id_strategy) + .minify_type(minify_type); + + match *node_env.await? { + NodeEnv::Development => {} + NodeEnv::Production => { + builder = builder.ecmascript_chunking_config(ChunkingConfig { + min_chunk_size: 20000, + ..Default::default() + }) + } + } + + Vc::upcast(builder.build()) + } + }; let entry_chunk_groups = entries .into_iter()