仍在學習咕嚕聲的繩索,無法找到解決方案。 我有一個配置文件,說一些數據config.json。我可以使用grunt在json文件中設置屬性值嗎?
當我運行一個特定的grunt任務時,我想在config.json文件中增加一個值。我已經能夠找到很多關於如何讀取文件的信息,但沒有更改值的信息。
謝謝。
仍在學習咕嚕聲的繩索,無法找到解決方案。 我有一個配置文件,說一些數據config.json。我可以使用grunt在json文件中設置屬性值嗎?
當我運行一個特定的grunt任務時,我想在config.json文件中增加一個值。我已經能夠找到很多關於如何讀取文件的信息,但沒有更改值的信息。
謝謝。
您可以使用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是:
這裏是更新的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'
]);
};
這個任務一個可愛的咕嚕工具是https://github.com/vojtajina/grunt-bump –
我找到了解決方案基於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));
歡迎堆棧溢出!儘管這段代碼可以解決這個問題,但[包括一個解釋](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高您的帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要用解釋性註釋來擠佔代碼,這會降低代碼和解釋的可讀性! –
好吧,我會改進評論,ty – giammangiato
謝謝,我希望能夠像jQuery能夠讀取值一樣,爲json寫一個屬性值,但似乎這是唯一的方法去做這個。 –