2016-04-04 10 views
0

Ich habe eine Dateistruktur, wo die Vorlagen in verschiedenen Ordnern befinden, aber die Build-Task legt sie alle in einem einzigen Ordner. Ich möchte alle verschiedenen Präfixe aus den Dateien entfernen und das korrekte Build-Präfix voranstellen.html2js preprocessor stripping mehrere Präfixe

Dies funktioniert alle Vorlagen laden

preprocessors: { 
    'src/components/**/*_template.html': ['ng-html2js'] 
} 

ich für die gleiche Funktionalität im Preprocessor suchen, so etwas wie diese

ngHtml2JsPreprocessor: { 
    stripPrefix: "src/components/**", 
    prependPrefix: "/assets/components", 
    moduleName: "templates" 
}, 

Gibt es eine Möglichkeit, den gesamten Präfix zu entfernen bis zu die Vorlage.html?

meine Ordnerstruktur ist wie folgt:

src 
    components 
     email 
      directive.js 
      service.js 
      email_template.html 
     phone 
      directive.js 
      service.js 
      phone_template.html 

Der Build-Ordner ist wie folgt

build 
    assets 
     components 
      email_template.html 
      phone_template.html 

Vielen Dank im Voraus.

+0

Warum? 'ngHtml2Js' setzt alle Vorlagen als Zeichenfolgen in den '$ templateCache'. Es sollte nicht einzelne Vorlage Dateien schreiben – Phil

+0

@Phil ngHtml2Js speichert die Vorlagen aus dem src-Verzeichnis, aber wenn meine Karma-Tests versuchen, die Build-Dateien zu laden, schlägt es fehl. ngHtml2Js entfernt das Präfix src und fügt das Build-Präfix hinzu, so dass es beim Testen des Karma-Tests GET /assets/components/email_template.html die Vorlage liefert. – JordanC

Antwort

2

Sie wahrscheinlich für diesen Es

ngHtml2JsPreprocessor: { 
    // define a custom transform function 
    // - cacheId returned is used to load template 
    // module(cacheId) will return template at filepath 
    cacheIdFromPath: function(filepath) { 
    // example strips 'public/' from anywhere in the path 
    // module(app/templates/template.html) => app/public/templates/template.html 
    var cacheId = filepath.strip('public/', ''); 
    **do whatever you need to construct the path** 
    return cacheId; 
    }, 
} 

suchen sind, ist in den Repo beschrieben. https://github.com/karma-runner/karma-ng-html2js-preprocessor

+0

Danke! Wird mit diesem Befehl in Kombination mit einem regulären Ausdruck implementiert. Dateipfad.replace (/ src \/Komponenten \/\ w * \ // i, '/ Assets/Komponenten /') – JordanC