2013-05-07 59 views
1

我嘗試了很多技巧,但對於我的生活,我無法得到這個工作。該技術給了我最大的承諾,但仍然沒有工作如下:有沒有一種方法可以增強Dart中的web-ui構建過程,以在構建過程完成後將我的代碼複製到其他地方?

- 我注意到「構建」方法(在build.dart中)的調用返回一個Future,所以我認爲如果我只是簡單地實現了Future的.then()方法,我可以確信,我的代碼將在整個構建過程完成並且所有文件已正確放置在我的web \ out目錄結構中之後執行。在我的「then」代碼中,我做了一個簡單的web/out到我的目標目錄的遞歸副本。現在,由於abc.html中的一些鏈接更改(作爲build()方法的結果),我必須將web/out目錄結構複製到最終惡意中的幾個不同位置,但我現在不在意這一點。真正的問題是,當我更改(例如)我的abc.css文件並保存它時,我認爲我的build.dart會執行並且所有文件更改都會被複制,但是我錯了。 2)在我上面的#1的冒險中,我想我會嘗試做一個「建立乾淨」,而不是這樣做,以爲這樣可以確保我將所有最新的文件都複製到我的最終目的地,但是這也不起作用。

我的主要目標是讓我的應用程序快速複製到部署的WAR目錄中的JBoss這樣我就可以快速測試我的REST調用,而不是依賴於端口3030

思想運行調試服務器上?

回答

1

首先,瞭解這裏工作的組件非常重要。 (如果您還不知道)。

build.dart在您的根目錄中映射到編輯器的功能。當它被調用並且傳遞給它的參數都在編輯器的世界中。我已經玩過這個文件中的一些記錄,只是爲了看看它什麼時候被調用,等等。如果你寫一個文件寫入文件之外的文件,或者日誌更新將啓動另一個構建,永遠不會結束。

構建,其從包包括的呼叫:web_ui/component_build是所有關於在WebUI編譯器。它生活在自己的世界中,並且只是通過build.dart傳遞的參數進行派對。爲了看看它是如何工作的,可以在build.dart之外親自玩這個代碼。

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

如果你想要一個扭捏build.dart文件的例子,你可以看看小工具。 https://github.com/kevmoo/widget.dart/blob/master/build.dart

我在這裏做了很多隨機清理。不知道它是否會超級有用,但會給你提供點子。

至於複製內容和準備部署,我使用躍點。這裏有一個小部件

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

我打破副本步入了自己的任務hop_runner。這個任務目前只是運行一個shell腳本,儘管有一些人正在努力製作一個純粹的Dart版本。

我們很樂意提供幫助。

+0

你當然給了我一些東西來看看。我想我的主要問題是你是否知道如何檢測到他們的整個構建過程已經完成,以便我可以運行一個ant腳本或其他東西(將我的文件複製到其最終位置)? – 2013-05-07 16:36:56

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'])); 
} 

通知的build()函數如何返回未來,你可以註冊將來完成後功能運行。

+0

希望團隊中沒有Windows用戶:) – 2013-05-15 09:19:23

+0

我很喜歡飛鏢:io內建的複製文件。 :) – 2013-05-16 17:20:29

+0

我猜最短的是'new File('source')。openRead()。pipe(new File('target')。openWrite())'。 – 2013-05-17 00:25:48

相關問題