feat: router-based wasm bundle splitting (#3683)
* feat: wasm-split base implementation * kinda sorta works with the cli * okay great it actually works * fix: cache busting for chunks * cleaned up version * it works with the router * wip: migrate to a faster linear solution using id remapping * add a good harness * it works completely on the docsite * the super tight build works too * make parallelizable * works on the docsite but not the harness * light cleanups, fix for both harness and docsite * make codegen smaller by extract some shared functions to prevent monos * chunking works, but tbd on tuning heuristics * extract used module * wip: cleaning up module * wip: much better understanding of how imports work * fix the call graph * working again... * wip: thinking about ifuncs * ifunc approach works * yes the ifunc approach works!! * it all works completely even with chunks * small cleanups * comments * actually locate all of the symbols * clean up final implementation * clean up tomls, revert some mono changs * clean up, add some more comments / docs in places * hoist more packages * clean up impl a bit more * clean cli * move harness to playwright * update playwright * extract codgen * add lazy to components * Add docs to split loader * clippy * typos * clippy, don't generate splits if not on wasm * whoops, const * Typos and docs * enable optimizations in ci * add optimizations to ci * add wasm-split router feature * parallel playwright? * fix no case check * disable pre-compress... think that might be the issue * better logging, no default pre-compress, caching of shared symbols * Fix: compressing assets * fix non-interactive logging for serve * cache playwright even on failure, use the cli with optimizations * fix prebuild * fix playwright webserver
This commit is contained in:
1 parent
14eb7597df
commit
bdeedc13eb
59 files changed
+4249
-299
No files matched your search
@@ -12,6 +12,7 @@ rust-version = "1.79.0"
|
||||
|
||||
[dependencies]
|
||||
dioxus-core = { workspace = true }
|
||||
dioxus-config-macros = { workspace = true }
|
||||
dioxus-html = { workspace = true, default-features = false, optional = true }
|
||||
dioxus-document = { workspace = true, optional = true }
|
||||
dioxus-history = { workspace = true, optional = true }
|
||||
@@ -29,6 +30,7 @@ dioxus-ssr = { workspace = true, optional = true }
|
||||
manganis = { workspace = true, features = ["dioxus"], optional = true }
|
||||
dioxus-logger = { workspace = true, optional = true }
|
||||
warnings = { workspace = true, optional = true }
|
||||
wasm-split = { workspace = true, optional = true }
|
||||
|
||||
serde = { workspace = true, optional = true }
|
||||
dioxus-cli-config = { workspace = true, optional = true }
|
||||
@@ -51,6 +53,7 @@ document = ["dioxus-web?/document", "dep:dioxus-document", "dep:dioxus-history"]
|
||||
logger = ["dep:dioxus-logger"]
|
||||
cli-config = ["dep:dioxus-cli-config"]
|
||||
warnings = ["dep:warnings"]
|
||||
wasm-split = ["dep:wasm-split", "dioxus-config-macros/wasm-split"] # note: to turn on the router splitter, you need to manually enable wasm-split on the router
|
||||
|
||||
launch = ["dep:dioxus-config-macro"]
|
||||
router = ["dep:dioxus-router"]
|
||||
|
||||
@@ -74,6 +74,10 @@ pub use dioxus_logger as logger;
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "cli-config")))]
|
||||
pub use dioxus_cli_config as cli_config;
|
||||
|
||||
#[cfg(feature = "wasm-split")]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "wasm-split")))]
|
||||
pub use wasm_split;
|
||||
|
||||
pub mod prelude {
|
||||
#[cfg(feature = "document")]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "document")))]
|
||||
@@ -138,6 +142,10 @@ pub mod prelude {
|
||||
#[cfg(feature = "asset")]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "asset")))]
|
||||
pub use manganis::{self, *};
|
||||
|
||||
#[cfg(feature = "wasm-split")]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "wasm-split")))]
|
||||
pub use wasm_split;
|
||||
}
|
||||
|
||||
#[cfg(feature = "web")]
|
||||
@@ -171,3 +179,5 @@ pub use dioxus_ssr as ssr;
|
||||
#[cfg(feature = "warnings")]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "warnings")))]
|
||||
pub use warnings;
|
||||
|
||||
pub use dioxus_config_macros as config_macros;
|
||||
Reference in new issue
Block a user