可以在 grunt.file.read 中使用 globbing 模式吗?

Can a globbing pattern be used in grunt.file.read?

我有以下文件夹结构:

Project
-build
-gruntfiles
--includes
---bar2.js
---bar3.js
--gruntfile.js
-folder1
--prefs.js
--team
---file1.jsx
-folder2
--prefs.js
--team
---file2.jsx
-folder3
--prefs.js
--team
---file3.jsx

然后我 运行 一个 grunt-replace 任务遍历所有文件夹并用 3 个不同文件的内容替换 3 个不同的模式:

      replace: {
        dist1: {
          options: {
            patterns: [
              {
                match: 'foo1',
                replacement: '<%= grunt.file.read("../**/prefs.js") %>'
              },
              {
                match: 'foo2',
                replacement: '<%= grunt.file.read("includes/bar2.js") %>'
              },
              {
                match: 'foo3',
                replacement: '<%= grunt.file.read("includes/bar3.js") %>'
              }
            ]
          },
          files: [
            {
              expand: true, 
              flatten: true, 
              src: ['../**/team/*.jsx'], 
              dest: '../build/team/'
            }
          ]
        }

Grunt 读取 includes 文件夹中的文件没问题。

我的问题是,对于第一个替换模式,我需要读取每个文件夹的相对 prefs.js

我已经尝试 grunt.file.expand returns 整个 prefs.js 文件路径列表,我只需要一种为当前文件夹选择正确路径的方法。

我设法通过使用配置变量和 grunt-replace 替换选项的函数来实现我想要的。

  count: 0,
  replace: {
    dist1: {
      options: {
        patterns: [
          {
            match: 'foo1',
            replacement: function(){
              var count = grunt.config.get("count");
              var paths = grunt.file.expand('../**/prefs.js');
              var current_path = paths[count];
              var content = grunt.file.read(current_path);
              count++;
              grunt.config.set("count", count);
              return content;
            }
          },
          {
            match: 'foo2',
            replacement: '<%= grunt.file.read("includes/bar2.js") %>'
          },
          {
            match: 'foo3',
            replacement: '<%= grunt.file.read("includes/bar3.js") %>'
          }
        ]
      },
      files: [
        {
          expand: true, 
          flatten: true, 
          src: ['../**/team/*.jsx'], 
          dest: '../build/team/'
        }
      ]
    }

在替换函数中,我现在使用 grunt.file.expand 调出目录路径数组,然后使用计数配置变量来选择正确的路径。

随着每次迭代为下一条路径做好准备,计数会增加。