2016-04-19 9 views
1

Ist es möglich, Transformer in einer Befehlszeilenanwendung auszuführen, bevor Sie es ausführen?Dart: Transformieren einer Befehlszeilenanwendung

Zum Beispiel, wenn ich eine Klasse habe, die in Observable-Klasse mischt. Und ich möchte es so transformieren, dass dirhtCheck in ChangeNotifier umgewandelt wird.

holder.dart

class Member extends Object with ChangeNotifier { 
    @observable 
    String name = ""; 
} 

class Holder extends Object with ChangeNotifier { 
    Holder() { 
    } 

    @observable 
    Member member = new Member(); 
} 

pubspec.yml

transformers: 
- observe: 
    files: 
    - bin/models/holder.dart 

Wenn ich diese Anwendung von IntelliJ IDE ausführen, es scheint nicht den Transformator darauf laufen vor der Ausführung Haupt.Dart.

Danke.

Antwort

1

Übertragungen werden nicht auf Befehlszeilen-Apps angewendet. Nur Code, der mit pub serve oder pub build geliefert wird, wird ausgeführt und wendet Transformatoren an. Ihr Code sollte auf dem Server/der Befehlszeile unverändert ausgeführt werden. Transformatoren müssen nicht ausgeführt werden.

Transformatoren werden verwendet, um zu beobachten, um dart:mirrors Zugriff durch generierten Code zu ersetzen, um Code Bloat für dart2js-generierte JS zu verhindern, aber das ist kein Problem in der Befehlszeile.

+0

Observe Transformatoren ersetzen nicht nur Dart: Spiegel für dart2js, sie vermeiden auch dreckigCheck, indem sie dirtyCheck durch die Verwendung von ChangeNotifier ersetzen. –

+0

Das ist möglich, ich habe das nicht genau untersucht, aber entweder beobachten, dass es nur für den Client gedacht ist, oder es wurde als akzeptabel erachtet, so auf der Konsole zu arbeiten. https://github.com/dart-lang/build ist ein neuer Ansatz, der auch für Konsolenanwendungen verwendet werden kann, aber AFAIK beobachten ist noch nicht für Build angepasst. –

+1

Danke. Scheint wie ein besserer Ansatz. Liebe inkrementelle Builds und lauf ohne Transformatoren. Wird dem Build-Paket genau folgen. –

Verwandte Themen