Join multiple Coffeescript files into one file? (Multiple subdirectories)

I've got a bunch of .coffee files that I need to join into one file.

I have folders set up like a rails app:

/src/controller/log_controller.coffee
/src/model/log.coffee
/src/views/logs/new.coffee

Coffeescript has a command that lets you join multiple coffeescripts into one file, but it only seems to work with one directory. For example this works fine:

coffee --output app/controllers.js --join --compile src/controllers/*.coffee

But I need to be able to include a bunch of subdirectories kind of like this non-working command:

coffee --output app/all.js --join --compile src/*/*.coffee

Is there a way to do this? Is there a UNIXy way to pass in a list of all the files in the subdirectories?

I'm using terminal in OSX.

They all have to be joined in one file because otherwise each separate file gets compiled & wrapped with this:

(function() { }).call(this);

Which breaks the scope of some function calls.


You could write a shell script or Rake task to combine them together first, then compile. Something like:

find . -type f -name '*.coffee' -print0 | xargs -0 cat > output.coffee

Then compile output.coffee

Adjust the paths to your needs. Also make sure that the output.coffee file is not in the same path you're searching with find or you will get into an infinite loop.

http://man.cx/find | http://www.rubyrake.org/tutorial/index.html

Additionally you may be interested in these other posts on Stackoverflow concerning searching across directories:

  • How to count lines of code including sub-directories
  • Bash script to find a file in directory tree and append it to another file
  • Unix script to find all folders in the directory

  • From the CoffeeScript documentation:

    -j, --join [FILE] : Before compiling, concatenate all scripts together in the order they were passed, and write them into the specified file. Useful for building large projects.

    So, you can achieve your goal at the command line (I use bash) like this:

    coffee -cj path/to/compiled/file.js file1 file2 file3 file4
    

    where file1 - fileN are the paths to the coffeescript files you want to compile.


    I've just release an alpha release of CoffeeToaster, I think it may help you. http://github.com/serpentem/coffee-toaster

    链接地址: http://www.djcxy.com/p/97024.html

    上一篇: 如何将单个Node.js文件拆分为单独的模块

    下一篇: 将多个Coffeescript文件加入一个文件? (多个子目录)