2016-04-19 2 views
1

Возможно ли запустить трансформатор в приложении командной строки перед его запуском?Dart: преобразование приложения в командной строке

Например, если у меня есть класс, который смешивается в классе Observable. И я хотел бы преобразовать его так, чтобы dirtCheck превращался в ChangeNotifier.

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 

Если я запускаю это приложение из IntelliJ IDE, он, кажется, не запускать трансформатор на нем перед выполнением main.dart.

Спасибо.

ответ

1

Transfomers не применяются к приложениям командной строки. Только код, который подается с использованием pub serve или pub build, запускает и применяет трансформаторы. Ваш код должен работать на сервере/командной строке как есть. Нет необходимости запускать трансформаторы.

Трансформаторы используются для наблюдения за заменой dart:mirrors доступа сгенерированным кодом, чтобы предотвратить раздувание кода для JS, созданного dart2js, но это не проблема в командной строке.

+0

Соблюдать трансформаторы не только для замены дротика: зеркала для dart2js, но и избежать dirtyCheck, заменив dirtyCheck с помощью ChangeNotifier. –

+0

Возможно, я не исследовал это, но наблюдение строится только с учетом клиента, или было сочтено приемлемым работать таким образом на консоли. https://github.com/dart-lang/build - это новый подход, который также можно использовать для консольных приложений, но AFAIK-наблюдение еще не адаптировано для сборки. –

+1

Спасибо. Похоже, это лучший подход. Love incremental строит и работает без функции трансформаторов. Будет тесно работать с пакетом 'build'. –