2016-02-02 2 views
0

Есть ли способ использовать Grunt, чтобы прочитать структуру дерева файлов в объект JSON, а затем ввести его в файл javascript.grunt добавить дерево файлов в объект javascript

Например, позволяет сказать, что мой проект был файл со структурой ...

Assets 
    ├╴docs        
    │ └╴doc1.txt 
    │ └╴doc2.txt     
    │ 
    ├╴effects 
    │ └╴sound.mp3 

я смог бы вложить в какой-.js файл.

Assets = { 
    docs : ['doc1.txt', 'doc2.txt.'], 
    effects: [sound.mp3]  
} 

, где начальные активы равны некоторым картам, например «@@ injectHere».

ответ

0

OK. Я понял это как двухэтапный процесс.

Первый, я использую модуль дерева для создания JSON-представления файловой системы. Я сохраняю файл JSON во временном файле в папке .tmp.

tree: { 
    options: { 
    }, 
    soundFileTree: { 
    files: [ 
     { 
      src: ['<%= yeoman.client %>/assets/audio/'], 
      dest: '.tmp/soundTree.json', 
     } 
    ], 
    }, 
}, 

Второй, я впрыснуть файл JSON в мой конечный пункт назначения.

Я использую модуль ворсин-инжектор. Я просто использовал require() внутри опции функции transform() для чтения JSON из папки .tmp. Если вам нужен() файл JSON, он вернет объект JSON. Так что мой файл хрюкать выглядит так ...

injector: { 
     // Inject JSON file into client and server files 
     soundFileTree: { 
     options: { 
      transform: function(filePath) { 
      var soundTreeJSONString = require(filePath); //you might have to adjust the files path 
      return JSON.stringify(soundTreeJSONString); 
      }, 
      starttag: '/* injector:soundFileTree */', 
      endtag: '/* endinjector */', 
     }, 
     files: { 
      '<%= yeoman.client %>/treeTarget.js': ['.tmp/soundTree.json'], 
     }, 
     }, 
    ... 
} 

Моего файл назначение выглядит следующим образом (а не фактические папки и файлы, иные, чем в моем вопросе.

var myVar= 
/* injector:soundFileTree */ 
{"boxing":{"bell":"boxing/bell.wav","warning":"boxing/warning.wav"}} 
/* endinjector */ 
; 
Смежные вопросы