2017-05-20 2 views
1

Ich benutze bereits das minify Argument beim Bauen mit dart2js.Dart - dart2js und weitere Größenoptimierung

Ich schaute auf die Ausgabe und ich sehe, dass die import 'dart:html Probleme in Bezug auf die Größe der Ausgabedatei verursacht (2kb. Dart-Datei wird 182kb .js-Datei). Zum Beispiel importiert es SVG Paket, obwohl in meinem Code ich nie berühren <svg> DOM Elements.

Ich verstehe, dass der Compiler nicht weiß, ob ich svg DOM-Elemente verwenden werde oder nicht. Und ich verstehe, dass die Verwendung von var einer der Gründe für dieses Verhalten ist.

Aber wenn ich keine var Schlüsselwörter verwende, hat der Compiler immer noch nicht genug "Power", um alle nicht verwendeten Pakete und Funktionen zu entfernen.

Gibt es eine Richtlinie, die ich verwenden kann, um den Import bestimmter Pakete zu verbieten? Ich meine jetzt integrierte Pakete. Ich verwende IntelliJ IDEA und es erlaubt mir nicht, etwas in der Dart-Standardkonfiguration zu ändern.

UPD: Versuchte zu verwenden

import 'dart:html' show querySelector, Element 

nur diese Methode und Klasse, aber die Dateigröße zu importieren ist 182KB noch.

Die einzige Lösung, die ich für jetzt sehe, ist, ein paar stripped Versionen des Standard-'dart: html 'Pakets zu machen. Der ohne WebGL, SVG und einige andere Funktionen.

Weil vielleicht Dart Compiler funktioniert gut, aber es gibt nur einige Methoden und Klassen, die ich nicht verwende, aber der Code verwendet. Wie die ersten Paketmethoden, die prüfen, ob einige Elemente SVG oder etwas ähnliches sind.

+0

Für andere Zwecke ich eine minimale Arbeits 'dart haben: mit html' Projekt mit' querySelector' Gebäude 'release' die Größe hat '37kb - main.dart.js'. Ein Schritt voraus könnte gegen ein Minimalprojekt sein. –

Antwort

1

Auch wenn Sie nichts importieren, erhalten Sie eine minimale Ausgabegröße. Dart bietet viele Funktionen wie Klassen mit Vererbung und Mixins (und vieles mehr) und die dart2js-Ausgabe enthält Code, der diese Funktionen implementiert. Dies ist wie das Hinzufügen einer JS-Bibliothek wie jQuery. Daher ergibt main() {} bereits eine Ausgabegröße von mehreren Dutzend kb. Das Hinzufügen einer anderen Codezeile fügt wahrscheinlich nur ein paar zusätzliche Bytes hinzu.

pub build Standardmäßig werden Baum-Shaking und Minifications durchgeführt, daher sind keine zusätzlichen Optionen erforderlich.

Verwandte Themen