Join multiple Coffeescript files into one file? (Multiple subdirectories)
我有一堆咖啡文件需要加入到一个文件中。
我的文件夹设置类似于Rails应用程序:
1 2 3 | /src/controller/log_controller.coffee /src/model/log.coffee /src/views/logs/new.coffee |
coffeescript有一个命令,允许您将多个coffeescript加入到一个文件中,但它似乎只适用于一个目录。例如,这很好:
1 | coffee --output app/controllers.js --join --compile src/controllers/*.coffee |
但我需要能够包括一堆子目录,类似于这个非工作命令:
1 | coffee --output app/all.js --join --compile src/*/*.coffee |
有办法吗?是否有一种单一的方法来传递子目录中所有文件的列表?
我在使用OSX中的终端。
它们都必须合并到一个文件中,否则每个单独的文件都将被编译并包装为:
1 | (function() { }).call(this); |
它打破了一些函数调用的范围。
从CoffeeScript文档中:
-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.
所以,您可以在命令行(我使用bash)实现您的目标,如下所示:
1 | coffee -cj path/to/compiled/file.js file1 file2 file3 file4 |
其中file1-filen是要编译的coffeescript文件的路径。
您可以编写一个shell脚本或rake任务,首先将它们组合在一起,然后编译。类似:
然后编译
根据需要调整路径。还要确保
http://man.cx/查找|网址:http://www.rubyrake.org/tutorial/index.html
此外,您可能对StackOverflow上关于跨目录搜索的其他文章感兴趣:
- 如何计算包含子目录的代码行数
- bash脚本在目录树中查找文件并将其附加到另一个文件
- 用于查找目录中所有文件夹的Unix脚本
我刚刚发布了一个alpha版的咖啡机,我想它可能会对你有所帮助。http://github.com/serpentem/coffee-toaster
这有助于我(
1 | coffee -o web/js -j project.js -cw coffeescript |
使用Coffee命令行工具最简单的方法。
咖啡——输出公共——加入——编译应用程序
app是我的工作目录,包含多个子目录,public是~output.js文件的存放位置。如果在nodejs中编写应用程序,很容易实现此过程的自动化
使用cake将它们全部编译到一个(或多个)生成的.js文件中。cakefile用作控制咖啡脚本编译顺序的配置——对于更大的项目来说非常方便。
cake非常容易安装和设置,在编辑项目时从vim调用cake很简单
1 | :!cake build |
您可以刷新浏览器并查看结果。
由于我也在忙着学习文件结构的最佳方法,并将咖啡脚本与主干和蛋糕结合使用,所以我在Github上创建了一个小项目,以供自己参考,也许它也能帮助您解决蛋糕和一些基本的事情。所有编译的文件都在www文件夹中,这样您就可以在浏览器中打开它们,所有源文件(cake配置除外)都在src文件夹中。在本例中,所有的.coffee文件都被编译并组合在一个output.js文件中,该文件随后包含在HTML中。
或者,您可以使用
1 2 3 4 | i = 0 foo = -> i++ ... foo() |
然后在生成的javascript中只有一个
因此,连接coffeescript是一个更明智的解决方案,但是这里仍然存在混淆的可能性;您连接代码的顺序几乎肯定会很重要。我强烈建议您改为模块化代码。