1

私は多くのテクニックを試しましたが、私の人生では、これを機能させることはできません. 私に最も有望だったが、それでもうまくいかなかったテクニックは次のとおりです。

-- 「build」メソッド (build.dart 内) を呼び出すと Future が返されることに気付いたので、その Future の .then () メソッドを単純に実装すれば、自分のコードは、ビルド プロセス全体が完了し、すべてのファイルが web\out ディレクトリ構造に適切に配置された後に実行されます。私の "then" コードでは、web/out のすべての単純な再帰コピーを目的のディレクトリに作成しました。さて、(build() メソッドの結果として) abc.html で行われるリンクの変更のいくつかのために、私は究極の嫌悪感のいくつかの異なる場所に web/out ディレクトリ構造をコピーしなければなりませんでしたが、私は今のところそれについて気にしません。本当の問題は、(たとえば) abc.css ファイルを変更して保存したときに、自分のビルドを考え出したことでした。

2) 上記の #1 の冒険中に、代わりに「ビルド クリーン」を実行しようと考えました。これにより、最新のファイルが常に最終的な宛先にコピーされることが確実になると考えましたが、これは失敗しました。動作しません。

私の主な目標は、JBoss でデプロイされた WAR ディレクトリにアプリケーションをすばやくコピーして、ポート 3030 で実行されているデバッグ サーバーに依存せずに REST 呼び出しをすばやくテストできるようにすることです。

考え?

4

2 に答える 2

1

特定の「Web UI ビルド プロセスがいつ完了したかを知るにはどうすればよいですか?」に答えるには、質問、次のようなことを試してください:

import 'package:web_ui/component_build.dart';
import 'dart:io';
import 'dart:async';

void main() {
  var args = new List.from(new Options().arguments);
  args.addAll(['--', '--no-rewrite-urls']);

  Future dwc = build(args, ['web/clock_page.html', 'web/HelloWorld.html']);

  dwc
    .then((_) => Process.run('cp', ['packages/browser/dart.js', 'web/out/dart.js']))
    .then((_) => Process.run('cp', ['App.css', 'out']));
}

関数が Future を返す方法に注意してくださいbuild()。また、Future の完了後に実行される関数を登録できます。

于 2013-05-08T04:05:13.000 に答える
1

まず、ここで機能しているコンポーネントを理解することが重要です。(まだ知らなかった場合。)

ルート ディレクトリのbuild.dartは、エディタの機能にマップされます。それが呼び出され、渡されたパラメーターはすべてエディターの世界にあります。いつ呼び出されるかなどを確認するために、このファイルからいくつかのログを試してみました。プロジェクト外のファイルに書き込むためにファイルに書き込む場合は注意してください。そうしないと、ログの更新によって別のビルドが開始され、終わらない。

package:web_ui/component_build に含まれるbuildの呼び出しは、すべて WebUi コンパイラに関するものです。これは独自の世界に存在し、build.dart から渡された引数を単純に処理します。このコードがどのように機能するかを確認するためだけに、build.dart の外で自分でこのコードを試してみる価値があるかもしれません。

https://github.com/dart-lang/web-ui/blob/master/lib/component_build.dart#L35

調整された build.dart ファイルの例が必要な場合は、Widgets を参照してください。https://github.com/kevmoo/widget.dart/blob/master/build.dart

私はここで多くのランダムなクリーンアップを行っています。とても参考になるかどうかはわかりませんが、アイデアは得られます。

コンテンツのコピーとデプロイの準備に関しては、Hopを使用します。ウィジェットの hop_runner は次のとおりです

https://github.com/kevmoo/widget.dart/blob/master/tool/hop_runner.dart

コピー ステップを独自のタスクに分割します。現時点では、このタスクはシェル スクリプトを実行するだけですが、純粋な Dart バージョンの作成に取り組んでいる人もいます。

助けていただければ幸いです。

于 2013-05-07T15:56:18.593 に答える