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

我有一堆.coffee文件,我需要将它们合并到一个文件中。

我将文件夹设置为一个Rails应用程序:

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

Coffeescript有一个命令,可以让你将多个coffeescripts加入到一个文件中,但它似乎只能用于一个目录。 例如,这工作正常:

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

但我需要能够包括一堆类似于这个非工作命令的子目录:

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

有没有办法做到这一点? 是否有一种UNIXy方式来传递子目录中所有文件的列表?

我在OSX中使用终端。

它们都必须被加入到一个文件中,否则每个单独的文件都会被编译和包装:

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

这打破了一些函数调用的范围。


你可以编写一个shell脚本或Rake任务,先将它们组合起来,然后编译。 就像是:

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

然后编译output.coffee

根据需要调整路径。 还要确保output.coffee文件不在您用find的相同路径中,否则您将进入无限循环。

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

另外,您可能对Stackoverflow上关于跨目录搜索的其他帖子感兴趣:

  • 如何对包括子目录的代码行进行计数
  • Bash脚本在目录树中查找文件并将其附加到另一个文件
  • Unix脚本查找目录中的所有文件夹

  • 来自CoffeeScript文档:

    -j,--join [FILE]:在编译之前,按所传递的顺序连接所有脚本,并将它们写入指定的文件中。 用于构建大型项目。

    所以,你可以在命令行(我使用bash)实现你的目标:

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

    其中file1-fileN是要编译的咖啡脚本文件的路径。


    我刚刚发布了CoffeeToaster的alpha版本,我认为它可以帮助你。 http://github.com/serpentem/coffee-toaster

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

    上一篇: Join multiple Coffeescript files into one file? (Multiple subdirectories)

    下一篇: How do I load my script into the node.js REPL?