如何将Coffeescript文件和其编译版本保存在不同的文件夹中?

3

我希望我的网站文件/文件夹结构保持整洁。因此,我不希望coffescript文件与其编译版本放在同一个文件夹中。

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

coffee -cw ./ ./

当从网站的根目录启动时,它可以递归地为所有CoffeeScript文件正常工作。但是有一个问题 - 它会将编译后的文件放在同一个文件夹中,而我想避免这种情况发生。
是否有可能告诉编译器 -“请编译每个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文件夹,每个文件夹都有一个编译器实例在运行。我能用一个实例替换它们吗?


@user1737909 哪一个? - Vitalii Korsakov
我喜欢Brunch,它非常棒。但你也可以使用Yeoman,或者像grunt这样的简单的“管道工具”(Yeoman是基于grunt构建的)。 - Ven
根据我目前的了解,Yeoman并没有为我的问题提供方便的解决方案。我在谷歌上发现了一些关于Yeoman+coffeescript的问题和抱怨。 - Vitalii Korsakov
我从未使用过Yeoman,我很担心。 - Ven
你可以使用gruntjs任务管理器来完成。使用grunt,你可以指定任何你想要维护的文件夹结构。你还可以在编译后添加任务来uglify所有的js文件。Grunt非常适用于开发,因为它可以监视你的源文件,并在每次更改后重新编译它们。 - Leonid Beschastny
显示剩余3条评论
5个回答

4

来自CoffeeScript文档:

将src目录树中的.coffee文件编译为lib目录中的相应的.js文件:

coffee --compile --output lib/ src/

3
你可以使用 gruntjs 任务管理器来完成。使用grunt,你可以指定任何你想要维护的文件夹结构。
在编译后,你还可以添加 uglify 任务来压缩所有的 js 文件。
Grunt 对于开发非常有用,因为它可以监视你的源文件,并在每次更改后重新编译它们。
我们目前正在项目中使用它来管理我们的前端。我们的任务包括:
- 编译 .coffee、.jade 和 .less 文件。 - 合并生成的 .js 和 .css 文件。 - 压缩和混淆合并后的文件。 - 部署到 Amazon S3。
这是一个例子,展示了如何使用gruntfile.coffee编译、合并、压缩和部署assets/js/目录下的所有.coffee文件: https://gist.github.com/lbeschastny/5716323 (尚未测试)。
您可以在grunt网站的入门部分找到更多示例以及详细的运行说明。

1
请查看此链接http://coffeescript.org/#usage 它说 -o, --output [DIR] 将所有编译后的JavaScript文件写入指定目录。与--compile或--watch一起使用。
希望能帮到你 :)

我不相信你读了我的问题 :) 当然我知道,也使用--compile和--watch键。只是针对一个文件夹,但我需要递归地应用于所有文件夹。 - Vitalii Korsakov

0

您需要完成独立的CoffeeScript文件夹结构和编译后的文件夹结构。

app
  |- css  
  |- images
  |- js
      |- libs
      |- controllers
      |- services
               |- loggers

这个将包含所有的CoffeeScript代码。

app-src
  |- js
      |- controllers
      |- services
               |- loggers

然后在应用程序和应用程序源代码的根目录下编译 coffee -cw app app-src


0
所以,在这种情况下,有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行

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接