38dafa1609
This PR adds proof-of-concept support for the App Router to `next build --experimental-turbo`. It introduces a new way to generate Next.js manifests in Turbopack. Currently, in dev, we pass proxy objects in lieu of manifests, and rely on the entries to know which chunks they need loaded on the client. However, this can't work for builds because it requires control over Next.js rendering, which is not compatible with a Next->Turbo approach. We would need to modify Next.js to support these "lazy" entries. So for now, we add well-known assets (`NextDynamicAsset`, `NextServerComponentAsset`, `NextClientReferenceAsset`, etc.) to the graph, which will get picked up when walking it during asset processing. This lets us collect all possible entries before chunking. This two-step process (collecting all entries, then chunking them) is also a good first step towards production chunking. ## Turbopack updates * https://github.com/vercel/turbo/pull/5494 <!-- Tobias Koppers - add reporting of console messages --> * https://github.com/vercel/turbo/pull/5448 <!-- Alex Kirszenberg - Misc. changes to support App Router build -->
80 lines
2.2 KiB
TOML
80 lines
2.2 KiB
TOML
[package]
|
|
name = "next-build"
|
|
version = "0.1.0"
|
|
description = "TBD"
|
|
license = "MPL-2.0"
|
|
edition = "2021"
|
|
autobenches = false
|
|
|
|
[[bin]]
|
|
name = "next-build"
|
|
path = "src/main.rs"
|
|
bench = false
|
|
required-features = ["cli"]
|
|
|
|
[lib]
|
|
bench = false
|
|
|
|
[features]
|
|
# By default, we enable native-tls for reqwest via downstream transitive features.
|
|
# This is for the convenience of running daily dev workflows, i.e running
|
|
# `cargo xxx` without explicitly specifying features, not that we want to
|
|
# promote this as default backend. Actual configuration is done when building next-swc,
|
|
# and also turbopack standalone when we have it.
|
|
default = ["cli", "custom_allocator", "native-tls"]
|
|
cli = ["clap"]
|
|
tokio_console = [
|
|
"dep:console-subscriber",
|
|
"tokio/tracing",
|
|
"turbo-tasks/tokio_tracing",
|
|
]
|
|
native-tls = ["next-core/native-tls"]
|
|
rustls-tls = ["next-core/rustls-tls"]
|
|
custom_allocator = [
|
|
"turbopack-binding/__turbo_tasks_malloc",
|
|
"turbopack-binding/__turbo_tasks_malloc_custom_allocator",
|
|
]
|
|
serializable = []
|
|
profile = []
|
|
|
|
[dependencies]
|
|
anyhow = { workspace = true }
|
|
async-recursion = { workspace = true }
|
|
clap = { workspace = true, features = ["derive", "env"], optional = true }
|
|
console-subscriber = { workspace = true, optional = true }
|
|
dunce = { workspace = true }
|
|
next-core = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
tokio = { workspace = true, features = ["full"] }
|
|
tracing = { workspace = true }
|
|
tracing-subscriber = { workspace = true, features = ["env-filter", "json"] }
|
|
indoc = { workspace = true }
|
|
indexmap = { workspace = true }
|
|
mime_guess = "2.0.4"
|
|
base64 = "0.21.0"
|
|
|
|
turbopack-binding = { workspace = true, features = [
|
|
"__turbo_tasks",
|
|
"__turbo_tasks_memory",
|
|
"__turbo_tasks_env",
|
|
"__turbo_tasks_fs",
|
|
"__turbo_tasks_memory",
|
|
"__turbopack",
|
|
"__turbopack_build",
|
|
"__turbopack_cli_utils",
|
|
"__turbopack_core",
|
|
"__turbopack_dev",
|
|
"__turbopack_ecmascript",
|
|
"__turbopack_ecmascript_runtime",
|
|
"__turbopack_env",
|
|
"__turbopack_node",
|
|
] }
|
|
turbo-tasks = { workspace = true }
|
|
|
|
[build-dependencies]
|
|
turbopack-binding = { workspace = true, features = ["__turbo_tasks_build"] }
|
|
vergen = { version = "7.3.2", default-features = false, features = [
|
|
"cargo",
|
|
"build",
|
|
] }
|