4

我正在尝试创建一个 grunt 任务来将分布在多个文件中的咖啡脚本代码编译为同名的 .js 文件。我有 grunt coffeescript 插件,我希望使用此页面上给出的“glob_to_multiple”规范:

https://www.npmjs.org/package/grunt-contrib-coffee

 glob_to_multiple: {
    expand: true,
    flatten: true,
    cwd: 'path/to',
    src: ['*.coffee'],
    dest: 'path/to/dest/',
    ext: '.js'
  },

但是,这个 grunt 任务不会将 .coffee 文件编译为对应名称的 .js 文件 - 对于目录及其子目录中的所有 .coffee 文件。我一直在调整这个配置,但我无法做到这一点。请帮忙。

4

2 回答 2

7

该模式*.coffee将仅匹配以文件夹结尾.coffeecwd文件。该模式将匹配所有以递归**/*.coffee方式结尾的文件及其所有子文件夹中的所有文件。.coffeecwdcwd

尝试以下配置:

glob_to_multiple: {
  expand: true,
  flatten: true,
  cwd: 'path/to',
  src: ['**/*.coffee'],
  dest: 'path/to/dest/',
  ext: '.js'
},

flatten: true如果您希望它重新创建文件夹结构path/to/dest/而不是将所有文件编译到单个文件夹,也请删除。

于 2014-05-27T15:37:23.757 回答
2

凯尔提供的公认答案与您想要实现的完全相反!

为了让它像你想要的那样工作,只需设置dest: path/to. 确保设置flatten: false标志。

通过以下示例,您可以使其工作

coffee: {
  glob_to_multiple: {
      expand: true,
      flatten: false,
      cwd: '',
      src: ['server/api/**/*.coffee', 'client/app/**/*.coffee'],
      dest: '',
      ext: '.js',
      extDot: 'last'
  }
}

src:[]数组中,您可以放入您想要抓取的任何根/子目录。您还cwd: ''可以dest: ''抓取整个项目,包括 node_modules 目录,作为概念证明。所有 js 文件都将在其对应的咖啡来源所在的完全相同的位置创建。extDot: 'last'确保类似的文件也myUnitTest.spec.coffee将得到正确处理。

于 2015-04-17T09:08:32.083 回答