2014-06-14 1 views
2

Barback package Description:Comment transformateur d'exécution automatique sur l'actif changement

Un système de construction d'actifs. Étant donné un ensemble de fichiers d'entrée et un ensemble de transformations (pensez aux compilateurs, préprocesseurs et autres), appliquera automatiquement les transformations appropriées et générera des fichiers de sortie . Lorsque les entrées sont modifiées, exécute automatiquement les transformations affectées. Runs se transforme de manière asynchrone et en parallèle lorsque possible pour optimiser la réactivité.

Docs on assets and transformers say:

Pour servir pub, les transformateurs fonctionnent lorsque le serveur dev démarre et lors de chaque changement d'actifs source. La commande pub build exécute les transformateurs une fois, puis se termine.

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

Il fonctionne comme prévu avec pub build, mais ne fait rien avec pub serve sauf l'impression:

complet et réussi

chaque fois que je ch ange n'importe quel fichier (pas seulement l'actif approprié) dans le répertoire.

After reading this Je pense que Dart a quelques problèmes avec regarder des fichiers (pas seulement des répertoires) sur la plate-forme Windows.

+0

pub service devrait fonctionner sur Windows, je l'utilise avec des transformateurs de mesure toute la journée. Qu'est-ce que vous attendez d'un service de pub? Aucun fichier n'est changé sur votre disque - c'est un serveur de dev donc vous devez demander votre fichier avec un navigateur. – Fox32

+0

@ Fox32 Je m'attends à ce que mon transformateur fonctionne chaque fois que je modifie l'actif. Dans ce cas, l'un des fichiers '.md .markdown .mdown'. Mais ce n'est pas le cas. 'Pub serve' fonctionne bien, sauf qu'il n'exécute pas de transformateur en mode" watch ". J'ai probablement mal compris quelque chose – JAre

+1

Si le résultat est "Construit avec succès" alors que votre transformateur a été exécuté, mais qu'il n'écrit aucun fichier sur le disque, ils ne sont accessibles que via le serveur HTTP intégré. – Fox32

Répondre

4

Il est vrai que pub serve exécute des transformateurs après chaque modification de fichier. Mais par rapport à la version pub, les résultats ne sont pas affichés dans le dossier build/. pub serve est un serveur de développement, vous devez donc vous demander des ressources via HTTP, par exemple dans un navigateur.

Voir la documentation pub serve pour plus de détails

Questions connexes