Compiler construction 如何将coffeescript文件及其编译版本保存在不同的文件夹中?

Compiler construction 如何将coffeescript文件及其编译版本保存在不同的文件夹中?,compiler-construction,coffeescript,Compiler Construction,Coffeescript,我希望我的文件/文件夹结构在我的网站上是干净的。所以我不希望coffescript文件与其编译版本位于同一文件夹中 在开发过程中,我正在使用编译器的--watch键。我以前用过这个命令 coffee -cw ./ ./ 当从网站的根目录下启动此文件时,它对所有的coffeescript文件递归运行良好。但是有一个问题-它将编译后的文件放在同一个文件夹中,这是我试图避免的 有没有可能对compile说“请编译每个coffeescript文件并将编译后的版本放入父文件夹” 更新: 嗯。这里有一点澄

我希望我的文件/文件夹结构在我的网站上是干净的。所以我不希望coffescript文件与其编译版本位于同一文件夹中

在开发过程中,我正在使用编译器的--watch键。我以前用过这个命令

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 src
coffee-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/