Terminal 将多个Coffeescript文件合并到一个文件中?(多个子目录)

Terminal 将多个Coffeescript文件合并到一个文件中?(多个子目录),terminal,coffeescript,Terminal,Coffeescript,我有一大堆.coffee文件,需要合并到一个文件中 我将文件夹设置为rails应用程序: /src/controller/log_controller.coffee /src/model/log.coffee /src/views/logs/new.coffee Coffeescript有一个命令,允许您将多个Coffeescript合并到一个文件中,但它似乎只适用于一个目录。例如,这很好: coffee --output app/controllers.js --join --compile

我有一大堆.coffee文件,需要合并到一个文件中

我将文件夹设置为rails应用程序:

/src/controller/log_controller.coffee
/src/model/log.coffee
/src/views/logs/new.coffee
Coffeescript有一个命令,允许您将多个Coffeescript合并到一个文件中,但它似乎只适用于一个目录。例如,这很好:

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-键入f-名称'*.coffee'-print0 | xargs-0 cat>output.coffee

然后编译
output.coffee

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

|

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


或者,您可以使用
--bare
标志,编译成JavaScript,然后根据需要包装JS。但这可能会产生问题;例如,如果您有一个包含代码的文件

i = 0
foo = -> i++
...
foo()
然后在生成的JavaScript中只有一个
var i
声明,
i
将递增。但是如果将
foo
函数声明移动到另一个CoffeeScript文件,则其
i
将位于
foo
范围内,而外部
i
将不受影响


因此,连接咖啡脚本是一个更明智的解决方案,但仍有可能出现混淆;连接代码的顺序几乎肯定很重要。我强烈建议您将代码模块化。

我刚刚发布了一款alpha版本的CoffeeToaster,我想它可能会对您有所帮助。

来自:

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

因此,您可以在命令行(我使用bash)实现以下目标:

coffee -cj path/to/compiled/file.js file1 file2 file3 file4
其中file1-fileN是要编译的coffeescript文件的路径。

用于在一个(或多个)生成的.js文件中编译所有文件。Cakefile用作配置,用于控制咖啡脚本的编译顺序——对于较大的项目非常方便

Cake非常容易安装和设置,在编辑项目时从vim调用Cake非常简单

:!cake build
您可以刷新浏览器并查看结果


由于我还忙于学习构建文件的最佳方式,并将coffeescript与主干和蛋糕结合使用,因此我创建了一个新的脚本,将其作为我自己的参考,也许它也会帮助您处理蛋糕和一些基本的事情。所有编译的文件都在www文件夹中,这样您就可以在浏览器中打开它们,所有源文件(蛋糕配置除外)都在src文件夹中。在本例中,所有的.coffee文件都被编译并组合成一个output.js文件,然后包含在html中

使用coffee命令行工具最简单的方法

coffee--输出公共--加入--编译应用程序

app是我的工作目录,包含多个子目录,public是~output.js文件的存放位置。如果在nodejs中编写应用程序,这个过程很容易自动化这对我有帮助(
-o
输出目录,
-j
加入project.js,
-cw
全面编译和观看coffeescript目录):


使用它可能不是最好的主意,尤其是如果您打算在脚本或其他东西中使用它,因为它已被弃用,并且将在将来的版本中删除
coffee -o web/js -j project.js -cw coffeescript