Compiler construction 如何将coffeescript文件及其编译版本保存在不同的文件夹中?
我希望我的文件/文件夹结构在我的网站上是干净的。所以我不希望coffescript文件与其编译版本位于同一文件夹中 在开发过程中,我正在使用编译器的--watch键。我以前用过这个命令Compiler construction 如何将coffeescript文件及其编译版本保存在不同的文件夹中?,compiler-construction,coffeescript,Compiler Construction,Coffeescript,我希望我的文件/文件夹结构在我的网站上是干净的。所以我不希望coffescript文件与其编译版本位于同一文件夹中 在开发过程中,我正在使用编译器的--watch键。我以前用过这个命令 coffee -cw ./ ./ 当从网站的根目录下启动此文件时,它对所有的coffeescript文件递归运行良好。但是有一个问题-它将编译后的文件放在同一个文件夹中,这是我试图避免的 有没有可能对compile说“请编译每个coffeescript文件并将编译后的版本放入父文件夹” 更新: 嗯。这里有一点澄
coffee -cw ./ ./
当从网站的根目录下启动此文件时,它对所有的coffeescript文件递归运行良好。但是有一个问题-它将编译后的文件放在同一个文件夹中,这是我试图避免的
有没有可能对compile说“请编译每个coffeescript文件并将编译后的版本放入父文件夹”
更新:
嗯。这里有一点澄清。也就是说,我有这个文件夹结构
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个编译器实例。我可以用一个实例替换它们吗?您需要完成单独的coffeescripts文件夹结构和编译的文件夹结构
app
|- css
|- images
|- js
|- libs
|- controllers
|- services
|- loggers
这一个将包含所有的咖啡脚本
app-src
|- js
|- controllers
|- services
|- loggers
然后在app和app srccoffee-cw app src
的根文件夹中编译
因此,在本例中,有4个coffee文件夹,我有4个编译器实例
为他们每个人跑步。我可以用一个实例替换它们吗
不支持,Coffee编译器只支持更改源目录路径的前缀来生成输出路径;它不支持向其添加类似。/
的后缀
coffee
命令行实用程序是用Coffescript编写的,源代码是,因此您可以自己修改它以添加所需的选项。最简单的方法是简单地更改--output
选项的含义。(尽管那样你就无法与世界分享这些变化,这将是一种耻辱。)我认为你所需要做的就是改变:
dir = if opts.output then path.join opts.output, baseDir else srcDir
致:
在outputPath()
函数中:查看此链接
它表示-o,--output[DIR]将所有编译的JavaScript文件写入指定的目录。与--compile或--watch一起使用
希望有帮助。:) 您可以使用任务管理器执行此操作。使用grunt,您可以指定要维护的任何文件夹结构
您还可以在编译后将任务添加到所有js文件中
Grunt对于开发非常有用,因为它可以监视源文件并在每次更改后重新编译它们
我们现在正在项目中使用它来管理前端。我们的任务包括:
- 编译
、.coffee
和.jade
文件.less
- 结果
和.js
文件的串联.css
- 连接文件的缩小和丑化
- 部署到AmazonS3
gruntfile.coffee
的示例,它编译、连接uglifies并部署.coffee
文件,这些文件来自assets/js/
目录:(尚未测试)
您可以在coffeescript文档的中找到更多详细说明如何运行它们的示例: 将src中.coffee文件的目录树编译为并行树 lib中的.js文件数量:
@muistooshort请参见更新post@user1737909哪一个?我喜欢早午餐,太棒了。但是你也可以使用Yeoman,或者一个简单的“管道工具”,比如grunt(Yeoman就是基于grunt构建的)。@user1737909从我到目前为止所学到的,Yeoman并不能为我的问题提供方便的解决方案。我在谷歌上发现了一些关于yeoman+coffeescript的问题和抱怨。我从来没有用过yeoman,我很抱歉,我不相信你读过我的问题:)当然我知道,并且使用编译和观看键。只针对一个文件夹,但我需要递归地针对所有文件夹。
dir = if opts.output then path.join baseDir, opts.output else srcDir
coffee --compile --output lib/ src/