2016-08-08 83 views
0

Immer noch lernen die Grunts und kann keine Lösung dafür finden. Ich habe eine Konfigurationsdatei, sagen Sie config.json mit einigen Daten.Kann ich grunt verwenden, um einen Eigenschaftswert in einer JSON-Datei festzulegen?

Wenn ich eine bestimmte Grunt-Task ausführen möchte, möchte ich einen Wert in der config.json-Datei erhöhen. Ich konnte eine Menge Informationen darüber finden, wie man die Datei liest, aber bisher noch nichts über das Ändern eines Wertes.

Danke.

Antwort

2

können Sie https://github.com/eruizdechavez/grunt-string-replace verwenden für String ersetzen und Plugin-Datei

'string-replace': { 
    dist: { 
    files: { 
     'dest/': 'src/**', 
     'prod/': ['src/*.js', 'src/*.css'], 
    }, 
    options: { 
     replacements: [{ 
     pattern: /\/(asdf|qwer)\//ig, 
     replacement: '"$1"' 
     }, { 
     pattern: ',', 
     replacement: ';' 
     }] 
    } 
    } 
} 

mit diesem Grunzen speichern u eine RegexMuster ersetzen kann (oder einen einfachen String) mit einem Ersatz-

die Schritte für machen Ihre endgültige json sind:

  • Last der jSON-Datei >>http://gruntjs.com/api/grunt.file
  • gelten die ersetzen Aufgabe >> auf der Oberseite
  • speichern JSON-Datei >>grunt.file.write (filepath, Inhalt [Optionen])
+1

Willkommen bei Stack-Überlauf! Während dieses Code-Snippet die Frage lösen kann, hilft [einschließlich einer Erklärung] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich, die Qualität Ihres Posts zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. Bitte versuchen Sie auch nicht, Ihren Code mit erklärenden Kommentaren zu füllen, dies reduziert die Lesbarkeit sowohl des Codes als auch der Erklärungen! –

+0

ok, ich werde den Kommentar zu verbessern, ty – giammangiato

+0

Danke, ich hatte gehofft für einen Weg, um nur eine Eigenschaft Wert auf die JSON zu schreiben, in der gleichen Weise wie Grunt kann die Werte lesen, aber es scheint, als ob dies der einzige Weg ist um dies zu tun. –

0

hier ist ein Beispiel für die Version der Datei zu aktualisieren package.json Verwenden einer Grunt-Aufgabe. (von 0,0,0 bis 1,0,0 bis 2,0,0);

module.exports = function(grunt) { 
    grunt.registerTask('version', function(key, value) { 
     var projectFile = "package.json"; 
     if (!grunt.file.exists(projectFile)) { 
      grunt.log.error("file " + projectFile + " not found"); 
      return true; //return false to abort the execution 
     } 
     var project = grunt.file.readJSON(projectFile), //get file as json object 
      currentVersion = project["version"].split('.'); 

     currentVersion[lastIndex] = Number(currentVersion[0]) + 1 
     currentVersion = currentVersion.join('.'); 

     project["version"] = currentVersion; 
     grunt.file.write(projectFile, JSON.stringify(project, null, 2)); 
    }); 
} 

jetzt können Sie die Aufgabe Version rufen Sie die Datei zu erhöhen durch

grunt version 

schreiben oder Sie können es auf Ihre Produktionsprozess hinzufügen, zum Beispiel:

module.exports = function(grunt) { 
    grunt.registerTask('buildProd', [ 
     'version' 
    ]); 
}; 
+1

für diese Aufgabe ist ein nettes Gruntwerkzeug https://github.com/vojtajina/grunt-bump –

1

fand ich ein Lösung basiert auf der giammangiato Antwort.

las ich die JSON-Datei, meine Änderungen vorgenommen und dann ersetzt nur die gesamte Datei durch eine neue Schreiben des modifizierten JSON wie so verwenden:

var mrJSON = grunt.file.readJSON('myDir/config.json'); 

    var mrNumber = mrJSON.number; 

    mrNumber++; 


    grunt.file.write('myDir/config.json', JSON.stringify(mrJSON));