我希望网站上的文件/文件夹结构保持干净。所以我不希望 coffescript 文件与其编译版本位于同一文件夹中。
在开发时我使用编译器的 --watch 键。我以前用过这个命令
coffee -cw ./ ./
从网站根目录启动此文件时,它可以很好地递归地处理所有咖啡脚本文件。但有一个问题 - 它将编译后的文件放在同一个文件夹中,我试图避免这一点。
是否可以对编译说 - “请编译每个 CoffeeScript 文件并将编译后的版本放入父文件夹中”?
更新:
好的。这里稍微澄清一下。 IE。我有这个文件夹结构
app
|- css
|- images
|- js
|- coffee
|- libs
|- controllers
|- coffee
|- services
|- coffee
|- loggers
|- coffee
您可以猜到,我想将所有的 CoffeeScript 文件存储在
coffee
文件夹中,但将它们编译到父文件夹中。例如。我想再添加一个记录器,然后我在 app/js/services/loggers/coffee中添加
newLogger.coffee
,编译器会编译它并将 newLogger.js
放入 app/js/services/loggers。
我可以在每个
coffee
文件夹中使用此命令
coffee -cw -o ../ ./
因此,在本例中,有 4 个
coffee
文件夹,我为每个文件夹运行 4 个编译器实例。我可以用一个实例替换它们吗?
来自咖啡脚本文档:
将src中.coffee文件的目录树编译成并行树 lib 中 .js 文件的数量:
coffee --compile --output lib/ src/
您可以使用 gruntjs 任务管理器来完成此操作。使用 grunt,您可以指定您想要维护的任何文件夹结构。
您还可以在编译后将任务添加到uglify所有js文件中。
Grunt 对于开发非常有用,因为它可以监视源文件并在每次更改后重新编译它们。
我们现在正在我们的项目中使用它来管理我们的前端。我们的任务包括:
.coffee
、.jade
和.less
文件的编译。.js
和 .css
文件的串联。这是
gruntfile.coffee
的示例,它编译、连接丑化并部署 .coffee
目录中的所有 assets/js/
文件:https://gist.github.com/lbeschastny/5716323(尚未测试)。
您可以在 grunt 站点的入门部分找到更多示例以及如何运行它们的详细说明
请参阅此链接 http://coffeescript.org/#usage
它说 -o, --output [DIR] 将所有已编译的 JavaScript 文件写入指定目录。与 --compile 或 --watch 结合使用。
希望有帮助。 :)
您需要完成单独的coffeescripts文件夹结构和编译后的文件夹结构。
app
|- css
|- images
|- js
|- libs
|- controllers
|- services
|- loggers
此脚本将包含所有咖啡脚本。
app-src
|- js
|- controllers
|- services
|- loggers
然后在app和app-src的根文件夹下编译
coffee -cw app app-src
。
因此,在本例中,有 4 个咖啡文件夹,我有 4 个编译器实例 为他们每个人奔跑。我可以用一个实例替换它们吗?
不。 Coffee编译器仅支持更改源目录路径的前缀来生成输出路径;它不支持添加像
../
这样的后缀。
coffee
命令行实用程序是用 Coffescript 编写的,并且源代码有很好的文档记录,因此您可以自己修改它以添加您想要的选项。 最简单的方法是简单地更改 --output
选项的含义。 (尽管那样你就无法与世界分享这些变化,这将是一种耻辱。)我认为你需要做的就是改变:
dir = if opts.output then path.join opts.output, baseDir else srcDir
至:
dir = if opts.output then path.join baseDir, opts.output else srcDir
在
outputPath()
函数中:command.coffee第261行