Grunt - читать json-объект из файла

Я хочу использовать плагин grunt-hash для переименования моих js файлов. Этот плагин создает новый файл, содержащий карту переименованных файлов:

hash: {
    options: {
        mapping: 'examples/assets.json', //mapping file so your server can serve the right files

Теперь мне нужно исправить ссылки на эти файлы, заменив все обычаи (переименуйте 'index.js' в 'index- {hash}.js'), поэтому я хочу использовать grunt-text-replace. В соответствии с документацией мне необходимо скопировать замены:

replace: {
  example: {
     replacements: [{
       from: 'Red', // string replacement
       to: 'Blue'
     }]
   }
}

Как я могу прочитать файл сопоставления json, чтобы получить значения {hash} для каждого файла и предоставить им замену задачи?

Ответы

Ответ 1

grunt.file.readJSON('your-file.json')

вероятно, то, что вы ищете.

Я установил небольшой тест. У меня есть простой JSON файл 'mapping.json', который содержит следующий объект JSON:

{
  "mapping": [
    {"file": "foo.txt"},
    {"file": "bar.txt"}
  ]
}

В моем Gruntfile.js я написал следующую простую тестовую задачу, которая читает первый объект в массиве 'mapping':

grunt.registerTask('doStuff', 'do some stuff.', function() {
  mapping = grunt.file.readJSON('mapping.json');
  grunt.log.write(mapping.mapping[0]["file"]).ok();
});

При вызове задачи Grunt вывод консоли будет следующим:

$ grunt doStuff
Running "doStuff" task
foo.txtOK

Done, without errors.

Надеюсь, это поможет!:)