2014-07-24 1 views
15

Ich möchte grunt-hash Plugin zum Umbenennen meiner JS-Dateien verwenden. Dieses Plugin eine neue Datei mit Karte von umbenannten Dateien erstellen:Grunt - Json-Objekt aus Datei lesen

hash: { 
    options: { 
     mapping: 'examples/assets.json', //mapping file so your server can serve the right files 

Jetzt muss ich diese Dateien Links beheben, indem Sie alle Verwendungen zu ersetzen (umbenennen ‚index.js‘ auf ‚Index- {hash} js‘) Ich möchte also grunt-text-replace Plugin verwenden. Laut Dokumentation Ich brauche Ersatz cofigure:

replace: { 
    example: { 
    replacements: [{ 
     from: 'Red', // string replacement 
     to: 'Blue' 
    }] 
    } 
} 

Wie kann ich json Mapping-Datei zu lesen bekommen {Hash} Werte für jede Datei und sie Aufgabe zu ersetzen?

+0

@Future reader: Wenn Sie nur eine Datei einlesen möchten, verwenden Sie ['grunt.file.read'] (https://gruntjs.com/api/grunt.file#grunt.file.read) – jpaugh

Antwort

22
grunt.file.readJSON('your-file.json') 

ist wahrscheinlich das, was Sie suchen.

Ich habe einen kleinen Test eingerichtet. Ich habe eine einfache JSON-Datei ‚mapping.json‘, das folgende JSON-Objekt enthält:

{ 
    "mapping": [ 
    {"file": "foo.txt"}, 
    {"file": "bar.txt"} 
    ] 
} 

In meinem Gruntfile.js Ich habe die folgende einfache Testaufgabe geschrieben, die das erste Objekt in dem ‚Mapping liest ‚-array:

grunt.registerTask('doStuff', 'do some stuff.', function() { 
    mapping = grunt.file.readJSON('mapping.json'); 
    grunt.log.write(mapping.mapping[0]["file"]).ok(); 
}); 

Wenn die Aufgabe Grunt Aufruf, wird die Konsole ausgegeben werden, wie folgt:

$ grunt doStuff 
Running "doStuff" task 
foo.txtOK 

Done, without errors. 

ich hoffe, das hilft! :)

+0

Ist es möglich, eine 'mapping' Variable zu erstellen, um die Aufgabe zu ersetzen? Oder extrahiere zu globaler Variable. – Livon

+0

Ich bin mir nicht sicher, ob ich die Ersetzungstask richtig verstehe, aber wäre es nicht möglich, die JSON-Datei in der Ersetzungstask zu lesen? – lumannnn

+0

Ich habe gerade meine Frage aktualisiert. Bitte sehen Sie sich die Konfiguration der Ersetzungsaufgabe an. – Livon