9

Ich verwende grunt-vulcanize aus einer Importdatei mit relativen Pfaden zu einem vulkanisierten.html an einem neuen Ort. Wenn die Datei bereit ist, wurden die relativen Pfade zum neuen Speicherort geändert. Das funktioniert wirklich gut für statische Dateien wie Bilder oder Dateien, aber ...Vulkanisierendes Polymer einmal binden src Attribut

In der Importdatei habe ich einige Polymer-Element-Dateien: paper-fab.html zum Beispiel. Meine Importdatei eine Referenz wie hat:

<link rel="import" href="../myPolymerElementsFolder/paper-fab/paper-fab.html"> 

Wie Sie in line 113 of the imported file sehen können, hat es zwei Attribute resolved by one-time-binding using brackets:

<iron-icon id="icon" src="[[src]]" icon="[[icon]]"></iron-icon> 

Das Problem scheint mit src Attribut. Die Vulkanisation interpretiert es als ein Weg, so fügt er den neuen relativen Pfad, die Lösung in etwa so:

<iron-icon id="icon" src="../myPolymerElementsFolder/paper-fab/[[src]]" icon="[[icon]]"></iron-icon> 

Aber das Attribut wird vom polymerElement selbst aufgelöst, so dass es keinen relativen Pfad Andernfalls ziehen enthalten soll es versagt, also muss ich es bei jeder Vulkanisation manuell entfernen. Es sollte funktionieren, wenn es ein gebundenes Attribut für ein Polymerelement ist, wie das icon Attribut. Lösung in etwa so:

<iron-icon id="icon" src="[[src]]" icon="[[icon]]"></iron-icon> 

Ich verstehe, dass Attribut src Sonderfall, dass relative Pfade ersetzen müssen, aber nicht in diesem speziellen Fall.

Ich habe mit der folgenden Konfiguration ohne Erfolg versucht:

grunt.initConfig({ 
    //(...) 
    vulcanize: { 
     default: { 
      options: { 
       excludes: ["finalFolder/_Imports.html"] 
      }, 
      files: { 
       "finalFolder/Vulcanized.html": "finalFolder/_Imports.html" 
      } 
     } 
    }, 
}); 

Wissen Sie, ob es möglich ist, diese die Config der grunt-vulcanize modifizieren zu lösen? Ich habe bereits an issue in der gitHub-Host-Seite geöffnet.

Antwort

1

Es ist möglich, mit grunt-string-replace plugin und das Hinzufügen einer neuen Aufgabe an den Grunzen-Datei:

grunt.initConfig({ 
    //(...) 
    'string-replace': { 
     inline: { 
      files: { 
       'finalFolder/Vulcanized.html': 'finalFolder/Vulcanized.html', 
      }, 
      options: { 
       replacements: [ 
        // place files inline example 
        { 
         pattern: /[.]{2}\/Scripts\/bower\/.*\/\[\[src\]\]/g, 
         replacement: "[[src]]" 
        } 
       ] 
      } 
     } 
    } 
});