我正在尝试创建一个grunt任务,将跨多个文件的coffeescript代码编译为同名的.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文件。我一直在调整这个配置,但我无法做到这一点。请帮忙。
答案 0 :(得分:7)
模式*.coffee
仅匹配.coffee
文件夹中以cwd
结尾的文件。模式**/*.coffee
将匹配.coffee
和cwd
本身的所有子文件夹中递归cwd
的所有文件。
尝试以下配置:
glob_to_multiple: {
expand: true,
flatten: true,
cwd: 'path/to',
src: ['**/*.coffee'],
dest: 'path/to/dest/',
ext: '.js'
},
如果您希望在flatten: true
中重新创建文件夹结构而不是将所有文件编译到单个文件夹,也请删除path/to/dest/
。
答案 1 :(得分:2)
Kyle提供的接受答案与您想要达到的完全相反!
要使其按预期工作,只需设置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
等文件也能得到正确处理。