2014-06-14 55 views
2

Barback package描述:如何在資產變化自動運行變壓器

資產構建系統。給定一組輸入文件和一組 轉換(認爲編譯器,預處理器等), 將自動應用適當的轉換並生成輸出 文件。 當輸入被修改時,自動運行受影響的變換 。當 可能最大化響應能力時,運行異步和並行變換。

Docs on assets and transformers say:

對於酒吧服務,變壓器,當開發服務器啓動並 每當源資產變更運行。 pub build命令一次運行 變壓器,然後退出。

So I took this example:

// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 
// for details. All rights reserved. Use of this source code is governed by a 
// BSD-style license that can be found in the LICENSE file. 

import 'package:barback/barback.dart'; 
import 'package:markdown/markdown.dart'; 

import 'dart:async'; 

class ConvertMarkdown extends Transformer { 

    // A constructor named "asPlugin" is required. It can be empty, but 
    // it must be present. It is how pub determines that you want this 
    // class to be publicly available as a loadable transformer plugin. 
    ConvertMarkdown.asPlugin(); 

    // Any markdown file with one of the following extensions is 
    // converted to HTML. 
    String get allowedExtensions => ".md .markdown .mdown"; 

    Future apply(Transform transform) { 
    return transform.primaryInput.readAsString().then((content) { 

     // The extension of the output is changed to ".html". 
     var id = transform.primaryInput.id.changeExtension(".html"); 

     String newContent = "<html><body>" 
         + markdownToHtml(content) 
         + "</body></html>"; 
     transform.addOutput(new Asset.fromString(id, newContent)); 
    }); 
    } 
} 

它運行如預期與pub build,但不做任何處理pub serve除了打印:

構建成功完成

我每次CH時間

在目錄中添加任何文件(不僅僅是適當的資產)。

After reading this我認爲飛鏢在Windows平臺上觀看文件(不僅僅是目錄)時存在一些問題。

+0

酒吧服務應該工作在Windows上,我與定製變壓器使用一整天。您希望在酒吧服務中發生什麼?您的磁盤上沒有文件被更改 - 它是一個dev服務器,因此您必須使用瀏覽器請求文件。 – Fox32

+0

@ Fox32我希望每次修改資產時我的變壓器都會運行。在這種情況下,'.md .markdown .mdown'文件之一。但事實並非如此。 '酒吧服務'工作正常,但不會在「監視」模式下運行變壓器。可能我誤解了一些東西 – JAre

+1

如果它輸出的「構建成功完成」比你的轉換器運行,但它沒有寫入任何文件到磁盤,它們只能通過在HTTP服務器中構建來訪問。 – Fox32

回答

4

確實,pub serve在每個文件修改後都運行變換器。但與pub發佈相比,它不會將結果輸出到build/文件夾。 pub serve是一個開發服務器,因此您需要通過HTTP請求您的資產,例如在瀏覽器中。

有關詳細信息,請參閱pub serve文檔