grunt 将文件树注入 javascript 对象

grunt inject file tree into javascript object

有没有办法使用 Grunt 将文件树的结构读取到 JSON 对象中,然后将其注入到 javascript 文件中。

例如,假设我的项目有一个结构文件...

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

我可以注入一些 .js 文件。

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

其中初始资产等于一些 while 卡,例如“@@injectHere”。

好的。我认为这是一个两步过程。

首先,我用grunt-tree模块构建了一个JSON表示的文件系统。我将 JSON 文件保存到 .tmp 文件夹中的临时文件。

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

其次,我将JSON文件注入我的最终目的地。

我使用 grunt-injector 模块。我只是在 transform() 函数选项中使用了 require() 来从 .tmp 文件夹中读取 JSON 。如果你 require() 一个 JSON 文件,它将 return 一个 JSON 对象。所以我的 grunt 文件看起来像这样...

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 */
;