Skip to content

Commit

Permalink
global module ids in cli
Browse files Browse the repository at this point in the history
  • Loading branch information
mischnic committed Jan 27, 2025
1 parent 3813b2c commit d19f965
Showing 1 changed file with 85 additions and 58 deletions.
143 changes: 85 additions & 58 deletions turbopack/crates/turbopack-cli/src/build/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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::{
Expand Down Expand Up @@ -199,47 +200,14 @@ async fn build_internal(
NodeEnv::Production => RuntimeType::Production,
};

let chunking_context: Vc<Box<dyn ChunkingContext>> = 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,
Expand All @@ -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,
Expand Down Expand Up @@ -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<Box<dyn ChunkingContext>> = 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()
Expand Down

0 comments on commit d19f965

Please sign in to comment.