2016-04-19 1 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

トランスフォーマはコマンドラインアプリには適用されません。 pub serveまたはpub buildを使用して提供されるコードのみが実行され、変圧器が適用されます。あなたのコードは、そのままサーバ/コマンドライン上で動くべきです。変圧器を動かす必要はありません。

トランスフォーマーは、dart:mirrorsのアクセスを、生成されたコードで置き換えて、dart2jsで生成されたJSのコードが肥大化するのを防ぐのに使用されますが、これはコマンドラインでは問題ありません。

+0

Observeトランスは、dart2jsのミラーであるdart:mirrorを置き換えるだけでなく、dirtyCheckをChangeNotifierで置き換えてdirtyCheckを回避します。 –

+0

それは可能ですが、私はそれを詳しく調べていませんでしたが、クライアントだけを念頭に置くか、コンソールでこのように動作することが容認されていました。 https://github.com/dart-lang/buildは、コンソールアプリケーションにも使用できる新しいアプローチですが、AFAIKはまだビルドには適応していません。 –

+1

ありがとうございます。より良いアプローチのようです。増分ビルドは、トランスフォーマー機能なしで実行できます。 'build'パッケージに密接に従います。 –

関連する問題