2016-08-08 1 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 являются:

  • загрузить файл в формате JSON >>http://gruntjs.com/api/grunt.file
  • применять заменить Задача >> на верхней
  • сохранить JSon файл >>grunt.file.write (Filepath, содержимое [, опции])
+1

Добро пожаловать на переполнение стека! Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. Также попробуйте не толковать код с пояснительными комментариями, что уменьшает читаемость кода и объяснений! –

+0

ok, я улучшу комментарий, ty – giammangiato

+0

Спасибо, я надеялся на способ просто написать значение свойства json, так же, как grunt может читать значения, но похоже, что это единственный способ сделать это. –

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

для этой задачи используется инструмент huteps: 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)); 

 Смежные вопросы

  • Нет связанных вопросов^_^