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 31, 2025
1 parent dbce745 commit 337bebb
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 @@ -16,6 +16,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 @@ -210,6 +211,88 @@ async fn build_internal(
NodeEnv::Development => RuntimeType::Development,
NodeEnv::Production => RuntimeType::Production,
};
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.clone()),
build_output_root,
build_output_root,
build_output_root,
Environment::new(Value::new(ExecutionEnvironment::NodeJsLambda(
NodeJsEnvironment::default().resolved_cell(),
)))
.to_resolved()
.await?,
runtime_type,
)
.build(),
),
load_env(*root_path),
);

let asset_context = get_client_asset_context(
*project_path,
execution_context,
compile_time_info,
node_env,
source_maps_type,
);

let entry_requests = (*entry_requests
.into_iter()
.map(|r| async move {
Ok(match r {
EntryRequest::Relative(p) => Request::relative(
Value::new(p.clone().into()),
Default::default(),
Default::default(),
false,
),
EntryRequest::Module(m, p) => Request::module(
m.clone(),
Value::new(p.clone().into()),
Default::default(),
Default::default(),
),
})
})
.try_join()
.await?)
.to_vec();

let origin = PlainResolveOrigin::new(asset_context, project_fs.root().join("_".into()));
let project_dir = &project_dir;
let entries = entry_requests
.into_iter()
.map(|request_vc| async move {
let ty = Value::new(ReferenceType::Entry(EntryReferenceSubType::Undefined));
let request = request_vc.await?;
origin
.resolve_asset(request_vc, origin.resolve_options(ty.clone()), ty)
.await?
.first_module()
.await?
.with_context(|| {
format!(
"Unable to resolve entry {} from directory {}.",
request.request().unwrap(),
project_dir
)
})
})
.try_join()
.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 => {
Expand All @@ -234,6 +317,7 @@ async fn build_internal(
runtime_type,
)
.source_maps(source_maps_type)
.module_id_strategy(module_id_strategy)
.minify_type(minify_type);

match *node_env.await? {
Expand Down Expand Up @@ -264,6 +348,7 @@ async fn build_internal(
runtime_type,
)
.source_maps(source_maps_type)
.module_id_strategy(module_id_strategy)
.minify_type(minify_type);

match *node_env.await? {
Expand All @@ -280,64 +365,6 @@ async fn build_internal(
}
};

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));
let asset_context = get_client_asset_context(
*project_path,
execution_context,
compile_time_info,
node_env,
source_maps_type,
);

let entry_requests = (*entry_requests
.into_iter()
.map(|r| async move {
Ok(match r {
EntryRequest::Relative(p) => Request::relative(
Value::new(p.clone().into()),
Default::default(),
Default::default(),
false,
),
EntryRequest::Module(m, p) => Request::module(
m.clone(),
Value::new(p.clone().into()),
Default::default(),
Default::default(),
),
})
})
.try_join()
.await?)
.to_vec();

let origin = PlainResolveOrigin::new(asset_context, project_fs.root().join("_".into()));
let project_dir = &project_dir;
let entries = entry_requests
.into_iter()
.map(|request_vc| async move {
let ty = Value::new(ReferenceType::Entry(EntryReferenceSubType::Undefined));
let request = request_vc.await?;
origin
.resolve_asset(request_vc, origin.resolve_options(ty.clone()), ty)
.await?
.first_module()
.await?
.with_context(|| {
format!(
"Unable to resolve entry {} from directory {}.",
request.request().unwrap(),
project_dir
)
})
})
.try_join()
.await?;

let module_graph = ModuleGraph::from_modules(Vc::cell(entries.clone()));

let entry_chunk_groups = entries
.into_iter()
.map(|entry_module| async move {
Expand Down

0 comments on commit 337bebb

Please sign in to comment.