[devtools_extensions] build_and_copy ships ~14 MB of assets the extension never loads (CanvasKit variants + un-tree-shaken icon font)
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 52/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- dart
- Ambito
- build-system, tooling
Direzione di ricerca
Inizia dall’implementazione di dart run devtools_extensions build_and_copy e verifica come richiama la build web di Flutter e copia extension/devtools/build/. Confronta i riferimenti nel flutter_bootstrap.js generato con i contenuti copiati di canvaskit/, incluso il flag per il tree-shaking delle icone. Il lavoro è completo quando le build CDN omettono gli asset inutilizzati mentre le build offline conservano i file necessari, e il tree-shaking delle icone può essere selezionato senza rompere le estensioni valide.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
dart run devtools_extensions build_and_copy produces extension builds that are CDN-configured (the default for flutter build web), yet copies the entire local canvaskit/ directory — every engine variant plus debug symbols — into extension/devtools/build/, and hardcodes --no-tree-shake-icons. The result is ~14 MB of published assets per package that the extension never fetches at runtime.
Since the extension build is published inside each package's pub archive, every package that ships a DevTools extension carries this weight, and every consumer downloads it on pub get.
Evidence
My package (kaisel): archive was 15 MB. After pruning build/canvaskit/ and rebuilding with icon tree-shaking, it is 1 MB, with no runtime behavior
change:
flutter_bootstrap.jsin the build referencesgstatic.com/flutter-canvaskit, so the localcanvaskit/files (canvaskit.wasm 6.9 MB, chromium/ 5.5 MB, skwasm_heavy 4.9 MB, experimental_webparagraph/ 3.9 MB, skwasm 3.4 MB, plus ~7 MB of.js.symbols) are never requested.- The build is
compileTarget: dart2js, so theskwasm*variants are unreachable regardless of CDN configuration. - Rebuilding without
--no-tree-shake-iconssucceeds — the compiler's own verification passed (it fails the build on non-constIconData) — and MaterialIcons went from 1,645,184 bytes to 9,040 bytes (99.5%).
Proposal
- Prune
build/canvaskit/in the copy step when the build is CDN-configured (the default). At minimum, always prune theskwasm*/ experimental variants for dart2js builds, where they are unreachable. If an author builds with--no-web-resources-cdn(e.g. for offline use — related: #4721), keepcanvaskit.wasm+chromium/canvaskit.wasmand drop only the unreachable variants and.js.symbols. - Expose a
--tree-shake-iconspassthrough (keeping today's--no-tree-shake-iconsas the default if desired). Tree-shaking is verified at compile time — it fails loudly when an extension constructsIconDatadynamically — so extensions that pass the check could opt into the ~1.6 MB saving safely.
Environment: devtools_extensions 0.5.1, Flutter 3.44.2 (Dart 3.12.2), macOS.
- Lingua principale
- Dart
- Stelle
- 1.7k
- Fork
- 405
- Merge medio
- 4g 23h
- PR unite (30g)
- 12
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di flutter/devtools
-
cleanup P1
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
-
a: quality cost: low P2
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
contributions welcome good first issue P2 screen: performance
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
-
contributions welcome cross-screen inspector-2.0-polish P2
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
cross-screen P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
Tutte le issue di flutter/devtools
Issue simili
-
improvement
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
linagora/tmail-flutter#4849 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
mlcommons/mobile_app_open#1182 ·
-
[Bug] Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
bggRGjQaUbCoE/PiliPlus#3048 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
zulip/zulip-flutter#2466 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100