2016-07-31 12 views
0

Ich habe einen app Ordner, in dem ich http://localhost:8000 für http://fomoapp-melbourne.rhcloud.com in zwei Dateien ersetzen möchte: companies-list.component.ts und events-list.component.ts. Ich versuche, grunt-replace-string Plugin zu verwenden und es scheint scheinbar erfolgreich mit grün Done Ergebnis und keine Fehler, aber kein Ersatz passiert. HierGrunt-string-replace funktioniert nicht

ist, wie Gruntfile.js wie folgt aussieht:

module.exports = function(grunt){ 

[ 
    'grunt-string-replace', 
].forEach(function(task){ 
    grunt.loadNpmTasks(task); 
}); 

// configure plugins 
grunt.initConfig({ 
    'string-replace': { 
     dist: { 
     files: { 
      './app/': ['companies-list.component.ts','events-list.component.ts'], 
     }, 
     options: { 
      replacements: [{ 
      pattern: 'http://localhost:8000', 
      replacement: 'http://fomoapp-melbourne.rhcloud.com', 
      }] 
     } 
     } 
    }, 
}); 

// register tasks 
    grunt.registerTask('default', ['string-replace']); 
}; 

Antwort

1

Die Grunt Files object für ist eine Abbildung von Quelldateien Zieldateien angeben. Der Zweck dieses Mappings besteht darin, Grunt mitzuteilen, dass der Inhalt der Dateien in der Quelle gespeichert werden soll, etwas mit dem Inhalt zu tun und dann die Antwort auf eine neue Datei im Zielordner zu schreiben.

Es scheint mir von Ihrer Konfiguration, dass Grunt zwei Dateien im app/Verzeichnis neu schreiben soll. Das wird nicht funktionieren. Ich wette, dass, wenn Sie grunzen mit der ausführlichen Option ausführen, grunt --verbose, die Ausgabe des folgenden enthalten:

Files: [no src] -> ./app/ 

Dies liegt daran, Grunt, die Quelldateien nicht finden kann, weil Sie ihre relativen Pfade angeben.

Es liegt an Ihnen, wie Sie Ihre App strukturieren möchten, aber Sie möchten vielleicht einen src/Ordner und einen dist/Ordner unter App/haben. Wenn Sie build your files objects dynamically wählen, Ihre Konfiguration könnte wie folgt aussehen:

files: [{ 
    expand: true, 
    cwd: './app/src/', 
    dest: './app/dest/', 
    src: ['companies-list.component.ts', 'events-list.component.ts'] 
}] 

Zusätzlich sind die documentation for grunt-string-replace Staaten:

Wenn das Muster ein String ist, nur das erste Vorkommen ersetzt werden, wie angegeben auf String.prototype.replac e.

Das bedeutet, dass, wenn Sie mehrere Instanzen Ihrer Zeichenfolge wollen ersetzt werden, können Sie eine Regular Expression literal bereitstellen muss. Zum Beispiel:

replacements: [{ 
    pattern: /http:\/\/localhost:8000/g, 
    replacement: 'http://fomoapp-melbourne.rhcloud.com' 
}]