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

问题描述 投票:0回答:5

我希望网站上的文件/文件夹结构保持干净。所以我不希望 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 个编译器实例。我可以用一个实例替换它们吗?

coffeescript
5个回答
4
投票

来自咖啡脚本文档:

将src中.coffee文件的目录树编译成并行树 lib 中 .js 文件的数量:

coffee --compile --output lib/ src/

3
投票

您可以使用 gruntjs 任务管理器来完成此操作。使用 grunt,您可以指定您想要维护的任何文件夹结构。

您还可以在编译后将任务添加到uglify所有js文件中。

Grunt 对于开发非常有用,因为它可以监视源文件并在每次更改后重新编译它们。

我们现在正在我们的项目中使用它来管理我们的前端。我们的任务包括:

  • .coffee
    .jade
    .less
    文件的编译。
  • 生成的
    .js
    .css
    文件的串联。
  • 串联文件的缩小和丑化。
  • 部署到 Amazon S3。

这是

gruntfile.coffee
的示例,它编译、连接丑化并部署
.coffee
目录中的所有
assets/js/
文件:https://gist.github.com/lbeschastny/5716323(尚未测试)。

您可以在 grunt 站点的入门部分找到更多示例以及如何运行它们的详细说明


1
投票

请参阅此链接 http://coffeescript.org/#usage

它说 -o, --output [DIR] 将所有已编译的 JavaScript 文件写入指定目录。与 --compile 或 --watch 结合使用。

希望有帮助。 :)


0
投票

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

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

此脚本将包含所有咖啡脚本。

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

然后在app和app-src的根文件夹下编译

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行

© www.soinside.com 2019 - 2024. All rights reserved.