2016-08-08 41 views
0

仍在學習咕嚕聲的繩索,無法找到解決方案。 我有一個配置文件,說一些數據config.json。我可以使用grunt在json文件中設置屬性值嗎?

當我運行一個特定的grunt任務時,我想在config.json文件中增加一個值。我已經能夠找到很多關於如何讀取文件的信息,但沒有更改值的信息。

謝謝。

回答

2

您可以使用https://github.com/eruizdechavez/grunt-string-replace用於替換字符串,並保存文件

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

這個繁重的插件ü可以用替換替換爲正則表達式(或一個簡單的字符串)

爲使您的最終步驟JSON是:

+1

歡迎堆棧溢出!儘管這段代碼可以解決這個問題,但[包括一個解釋](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高您的帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要用解釋性註釋來擠佔代碼,這會降低代碼和解釋的可讀性! –

+0

好吧,我會改進評論,ty – giammangiato

+0

謝謝,我希望能夠像jQuery能夠讀取值一樣,爲json寫一個屬性值,但似乎這是唯一的方法去做這個。 –

0

這裏是更新的package.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)); 
相關問題