Skip to content

Commit

Permalink
allow to configure min_chunk_size in ChunkingConfig
Browse files Browse the repository at this point in the history
  • Loading branch information
sokra committed Jan 17, 2025
1 parent 15887cf commit 05242ad
Show file tree
Hide file tree
Showing 7 changed files with 41 additions and 13 deletions.
5 changes: 4 additions & 1 deletion crates/next-core/src/next_client/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -426,7 +426,10 @@ pub async fn get_client_chunking_context(
if next_mode.is_development() {
builder = builder.hot_module_replacement().use_file_source_map_uris();
} else {
builder = builder.ecmascript_chunking_config(ChunkingConfig {})
builder = builder.ecmascript_chunking_config(ChunkingConfig {
min_chunk_size: 20000,
..Default::default()
})
}

Ok(Vc::upcast(builder.build()))
Expand Down
10 changes: 8 additions & 2 deletions crates/next-core/src/next_edge/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,10 @@ pub async fn get_edge_chunking_context_with_client_assets(
.module_id_strategy(module_id_strategy);

if !next_mode.is_development() {
builder = builder.ecmascript_chunking_config(ChunkingConfig {})
builder = builder.ecmascript_chunking_config(ChunkingConfig {
min_chunk_size: 20000,
..Default::default()
})
}

Ok(Vc::upcast(builder.build()))
Expand Down Expand Up @@ -274,7 +277,10 @@ pub async fn get_edge_chunking_context(
.module_id_strategy(module_id_strategy);

if !next_mode.is_development() {
builder = builder.ecmascript_chunking_config(ChunkingConfig {})
builder = builder.ecmascript_chunking_config(ChunkingConfig {
min_chunk_size: 20000,
..Default::default()
})
}

Ok(Vc::upcast(builder.build()))
Expand Down
10 changes: 8 additions & 2 deletions crates/next-core/src/next_server/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1011,7 +1011,10 @@ pub async fn get_server_chunking_context_with_client_assets(
if next_mode.is_development() {
builder = builder.use_file_source_map_uris();
} else {
builder = builder.ecmascript_chunking_config(ChunkingConfig {})
builder = builder.ecmascript_chunking_config(ChunkingConfig {
min_chunk_size: 20000,
..Default::default()
})
}

Ok(builder.build())
Expand Down Expand Up @@ -1052,7 +1055,10 @@ pub async fn get_server_chunking_context(
if next_mode.is_development() {
builder = builder.use_file_source_map_uris()
} else {
builder = builder.ecmascript_chunking_config(ChunkingConfig {})
builder = builder.ecmascript_chunking_config(ChunkingConfig {
min_chunk_size: 20000,
..Default::default()
})
}

Ok(builder.build())
Expand Down
10 changes: 8 additions & 2 deletions turbopack/crates/turbopack-cli/src/build/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,10 @@ async fn build_internal(
match *node_env.await? {
NodeEnv::Development => {}
NodeEnv::Production => {
builder = builder.ecmascript_chunking_config(ChunkingConfig {})
builder = builder.ecmascript_chunking_config(ChunkingConfig {
min_chunk_size: 20000,
..Default::default()
})
}
}

Expand All @@ -260,7 +263,10 @@ async fn build_internal(
match *node_env.await? {
NodeEnv::Development => {}
NodeEnv::Production => {
builder = builder.ecmascript_chunking_config(ChunkingConfig {})
builder = builder.ecmascript_chunking_config(ChunkingConfig {
min_chunk_size: 20000,
..Default::default()
})
}
}

Expand Down
5 changes: 3 additions & 2 deletions turbopack/crates/turbopack-core/src/chunk/chunking/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,9 +118,10 @@ pub async fn make_chunks(
empty_referenced_output_assets: OutputAssets::empty().resolve().await?,
};

if let Some(_chunking_config) = chunking_configs.get(&ty) {
if let Some(chunking_config) = chunking_configs.get(&ty) {
// Production chunking
make_production_chunks(chunk_items, module_graph, split_context).await?;
make_production_chunks(chunk_items, module_graph, chunking_config, split_context)
.await?;
} else {

Check failure on line 125 in turbopack/crates/turbopack-core/src/chunk/chunking/mod.rs

View workflow job for this annotation

GitHub Actions / rust check / build

this `else { if .. }` block can be collapsed
if !*ty.must_keep_item_order().await? {
app_vendors_split(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,18 @@ use turbo_prehash::BuildHasherExt;
use turbo_tasks::{FxIndexMap, ResolvedVc, ValueToString, Vc};

use crate::{
chunk::chunking::{make_chunk, ChunkItemWithInfo, SplitContext},
chunk::{
chunking::{make_chunk, ChunkItemWithInfo, SplitContext},
ChunkingConfig,
},
module::Module,
module_graph::ModuleGraph,
};

pub async fn make_production_chunks(
chunk_items: Vec<ChunkItemWithInfo>,
module_graph: Vc<ModuleGraph>,
chunking_config: &ChunkingConfig,
mut split_context: SplitContext<'_>,
) -> Result<()> {
let span_outer = tracing::trace_span!(
Expand Down Expand Up @@ -49,7 +53,7 @@ pub async fn make_production_chunks(
grouped_chunk_items.entry(key).or_default().push(chunk_item);
}

let min_chunk_size = 20000;
let &ChunkingConfig { min_chunk_size } = chunking_config;

if min_chunk_size == 0 {
span.record("chunks", grouped_chunk_items.len());
Expand Down
6 changes: 4 additions & 2 deletions turbopack/crates/turbopack-core/src/chunk/chunking_context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,11 @@ pub struct EntryChunkGroupResult {
pub availability_info: AvailabilityInfo,
}

#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, TraceRawVcs, NonLocalValue)]
#[derive(
Default, Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, TraceRawVcs, NonLocalValue,
)]
pub struct ChunkingConfig {
// TODO
pub min_chunk_size: usize,
}

#[turbo_tasks::value(transparent)]
Expand Down

0 comments on commit 05242ad

Please sign in to comment.