2016-07-04 9 views
0

私はAngular 2 RC4 compiler-cliを試して、プロジェクトコンポーネントをオフラインでコンパイルしようとしています。ここでいくつかの問題が発生しています。角2 RC 4コンパイラcliエラー

だけの通知のために、私はここで見つけることができる方向を使用しています:http://blog.mgechev.com/2016/06/26/tree-shaking-angular2-production-build-rollup-javascript/

だから、私のレイアウトは、我々がここではすべてをES5目標のためにエクスポートされたいくつかの民間NPMパッケージを抱えているということですesmフォルダにネストされたそのパッケージのes2015バージョンと、esm/core.jsをポイントするjsnext:mainタグ。

これで私はこれらの外部モジュールを正常にロードしていて、実際に問題なく動作するアプリケーションを作成するプロジェクトを構築しています。それをさらに良くするために、上記のウェブポストで説明したすべてのテクニックを適用したいと思います。

node_modules/.bin/ngc -p . 

そして、私はLinuxのビルドサーバー上でこれをやっている:私はes2015にターゲットとモジュールを設定し、実行するのTSconfigファイルを作成したことのすべてを行うために

。すべてこの設定で

問題は、何らかの理由で外部のパッケージに記載されている構成部品の一部が正しくNGCによって解析することができないことであると私は取得しています:コアパッケージにあるコンポーネントの各使用あたり

Error: No Directive annotation found on *external component* 

エラー。

この設定で何が問題なのか、誰に教えてもらえますか?どのように解決できますか?

また 私は本当に最終的なレイアウトのようにどのように見えるかをバンドルサイズ見たい

...

は、私は例のいくつかは@Componentデコレータ内moduelIdを使用することに気付きましたが、私は必要性を見ていませんでしたそのためには、少なくとも今のところ、それは問題なのだろうか?

PS

私は、これらのエラーを無視し、私はエラーが発生して、これらの外部コンポーネントのいずれかを含めたすべてのコンポーネントは、* .ngfactory.tsは空のファイルとして生成されていることを見に行くことにしよう。

PPS

また、すべてのプロジェクトをプレーンtsファイルからコンパイルできます。しかし、そのモジュールがすでにnode-modulesフォルダにマップされているので、そのパッケージtsソースファイルを持つローカルフォルダにmy-local-coreへのすべての参照をどのようにリダイレクトするかという大きな問題が発生します。

答えて

1

これは、hello worldプロジェクトより大きなものをオフラインでコンパイルすることができる状態ではありません。 最初に、事前コンパイルなしにアンギュラ・コンポーネントをデプロイするときのように、テンプレートURLを解析する方法についての誤解の主な原因があります。これらのURLは、WebページのURLから派生したものです。事前コンパイルでは、すべてのURLはコンポーネントtsファイルからの相対パスとみなされますが、絶対URLを使用するとオフラインコンパイルは行われませんが、相対URLを使用すると非コンパイルモードでは機能しません。 第2に、外部パッケージに定義されているコンポーネントはコンパイル済みのバージョンに解析できません。 es2015を含むさまざまなモジュールフォーマットにも当てはまります。 第3に、ngcは、tscブレーキ内でうまく動作するカスタムデコレータと機能を、「シンボル値を静的に解決する際にエラーが発生しました」という構文では解析できません。

RC5またはおそらくAngular2の最終リリースを楽しみにしています。