我有一堆.coffee文件需要加入一个文件。

我的文件夹像铁轨应用程序一样设置:

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

Coffeescript具有一个命令,可让您将多个库存订阅加入一个文件,但似乎只能与一个目录一起使用。例如,这很好:

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

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

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

有没有办法做到这一点?是否有一种单独的方法可以通过子目录中所有文件的列表?

我在OSX中使用终端。

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

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

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

有帮助吗?

解决方案

您可以编写shell脚本或耙任务以将它们组合在一起,然后编译。就像是:

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上有关跨目录进行搜索的其他帖子感兴趣:

其他提示

来自 咖啡本文档:

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

因此,您可以在这样的命令行(我使用bash)上实现自己的目标:

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

file1-备案是您要编译的CoffeeScript文件的路径。

我刚刚发布了Coffeetoaster的Alpha版本,我认为这可能会为您提供帮助。http://github.com/serpentem/coffee-toaster

使用咖啡命令行工具的最简单方法。

咖啡 - 公开 - join-编译应用程序

应用程序是我的工作目录,持有多个子目录,公共是〜output.js文件的位置。如果在nodejs中编写应用程序,则易于自动化此过程

这对我有帮助(-o 输出目录, -j 加入project.js, -cw 完整地查看并观看Coffeescript目录):

coffee -o web/js -j project.js -cw coffeescript

利用 蛋糕 将它们全部编译成一个(或更多)结果的.js文件。 Cakefile用作配置,它可以控制您的咖啡脚本编译的顺序 - 非常方便地提供更大的项目。

蛋糕非常容易安装和设置,在编辑项目时,请从VIM中调用蛋糕,然后简单

:!cake build

您可以刷新浏览器并查看结果。

由于我也忙于学习结构文件并将咖啡本结合结合与骨干和蛋糕结合使用的最佳方法,因此我创建了一个 Github上的小项目 为了将其作为我自己的参考,也许它将帮助您解决蛋糕和一些基本的事情。所有编译的文件都在 万维网 文件夹,以便您可以在浏览器中打开它们,所有源文件(蛋糕配置除外)都在 src 文件夹。在此示例中,所有.foffee文件均已编译和组合 输出.js文件,然后包含在HTML中。

或者,您可以使用 --bare 标记,编译为JavaScript,然后在必要时包裹JS。但这可能会造成问题。例如,如果您有一个带有代码的文件

i = 0
foo = -> i++
...
foo()

然后只有一个 var i 在结果的JavaScript中声明,并 i 将会增加。但是,如果您移动了 foo 函数声明为另一个coffeescript文件,然后 i 会住在 foo 范围和外部 i 会不受影响。

因此,将咖啡本串联的是一个更明智的解决方案,但是那里仍然存在混乱的潜力。您加入代码的顺序几乎肯定会很重要。我强烈建议您对代码进行模块化。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top