2016-08-08 8 views
0

まだまだ縄の縄を学んでいて、これに対する解決策を見つけることができません。 config.jsonにいくつかのデータがある設定ファイルがあります。jsonファイルでgruntを使用してプロパティ値を設定できますか?

特定のgruntタスクを実行すると、config.jsonファイルの値を増やしたいとします。私はファイルの読み方について多くの情報を見つけることができましたが、値を変更することについてこれまで何もしていませんでした。

ありがとうございました。

答えて

2

あなたはuは、交換して最終的な作りのため

ステップを正規表現パターン(または単純な文字列)を置き換えることができますプラグインこのうなり声でファイル

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

https://github.com/eruizdechavez/grunt-string-replaceを使用するための文字列を置換して保存することができますJSONは以下のとおりです。

+1

は、スタックオーバーフローへようこそ!このコードスニペットは問題を解決するかもしれませんが、[説明を含めて](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。あなたのコードに説明的なコメントを詰め込まないようにしてください。これは、コードと説明の両方の可読性を低下させます! –

+0

私はコメントを改善するつもりです – giammangiato

+0

ありがとう、私は値を読み取ることができるように、jsonにプロパティ値を書き込む方法を期待していましたが、これが唯一の方法であるように思えますこれをする。このタスクのための –

0

はpackage.jsonファイルのバージョンを更新する例です>>grunt.file.write(ファイルパス、内容[、オプション])JSONファイルを保存します無駄な仕事をしている。 (0.0.0から1.0.0から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)); 
    }); 
} 

今あなたが

grunt version 

を書き込むことで、ファイルをインクリメントするタスクのバージョンを呼び出すことができますか、例えば、あなたの生産プロセスに追加することができます

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

かわいいつぶやきツールはhttps://github.com/vojtajina/grunt-bumpです –

1

私が見つけましたソリューションはgiammangiatoの答えに基づいています。

私は、JSONファイルを読み、私の変更を行った後、同じように変更されJSONを使って新しいものを書くことによって、ファイル全体を置き換えるので:

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

    var mrNumber = mrJSON.number; 

    mrNumber++; 


    grunt.file.write('myDir/config.json', JSON.stringify(mrJSON)); 
関連する問題