Reputation: 2415
I am trying to create a grunt task to compile coffeescript code spread across multiple files to .js files of the same name. I have the grunt coffeescript plugin and I am looking to use the "glob_to_multiple" spec that is given on this page:
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'
},
However, this grunt task does not compile .coffee files to .js files of corresponding names - for all .coffee files in a directory and its sub directories. I've been tweaking this config, for a while but I can't get it to do this. Please help.
Upvotes: 4
Views: 1059
Reputation: 15702
The accepted answer provided by Kyle does the exact opposite of what you want to achieve!
To make it work like you want to, just set dest: path/to
. Make sure to set flatten: false
flag.
With the below example you can make it work
coffee: {
glob_to_multiple: {
expand: true,
flatten: false,
cwd: '',
src: ['server/api/**/*.coffee', 'client/app/**/*.coffee'],
dest: '',
ext: '.js',
extDot: 'last'
}
}
In the src:[]
array you can put in whatever root/subdirs you want to be crawled. You could also cwd: ''
and dest: ''
to crawl your whole project including node_modules directory, just as a proof of concept. All js files will get created at the exact same spot where their corresponding coffee origins are located. The extDot: 'last'
makes sure that files like myUnitTest.spec.coffee
will get processed properly as well.
Upvotes: 2
Reputation: 13762
The pattern *.coffee
will only match files that end with .coffee
in the cwd
folder. The pattern **/*.coffee
will match all files that end with .coffee
recursively in all sub folders of cwd
and the cwd
itself.
Try the following config:
glob_to_multiple: {
expand: true,
flatten: true,
cwd: 'path/to',
src: ['**/*.coffee'],
dest: 'path/to/dest/',
ext: '.js'
},
Also remove flatten: true
if you want it to recreate the folder structure in path/to/dest/
instead of compiling all files to the single folder.
Upvotes: 7