【问题标题】:How to keep coffeescript file and its compiled version in different folders?如何将咖啡脚本文件及其编译版本保存在不同的文件夹中?
【发布时间】:2013-06-06 12:18:45
【问题描述】:

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

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

coffee -cw ./ ./

当从网站的根目录启动它时,它对所有的咖啡脚本文件递归地工作得很好。但是有一个问题 - 它将编译后的文件放在同一个文件夹中,我尽量避免。

是否可以对编译说-“请编译每个coffeescript文件并将编译后的版本放在父文件夹中”?

更新:

好的。这里稍微澄清一下。 IE。我有这个文件夹结构

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

正如您所猜到的,我想将所有咖啡脚本文件存储在 coffee 文件夹中,但将它们编译到父文件夹中。例如。我想再添加一个记录器,然后在 app/js/services/loggers/coffee 中添加newLogger.coffee,编译器对其进行编译并将newLogger.js 放入 app/js/services/记录器

我可以在每个coffee 文件夹中使用这个命令

 coffee -cw -o ../ ./

因此,在这种情况下,有 4 个 coffee 文件夹,我为每个文件夹运行了 4 个编译器实例。我可以用一个实例替换它们吗?

【问题讨论】:

  • @muistooshort 请查看更新后的帖子
  • @user1737909 是哪一个?
  • 我喜欢早午餐,太棒了。但你也可以使用 Yeoman,或者像 grunt 这样的简单“管道工具”(构建 yeoman)。
  • @user1737909 根据我目前了解到的情况,yeoman 并没有为我的问题提供方便的解决方案。我在 google 中发现了一些关于 yeoman+coffeescript 的问题和抱怨。
  • 恐怕我没用过yeoman

标签: compiler-construction coffeescript


【解决方案1】:

来自咖啡脚本文档:

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

coffee --compile --output lib/ src/

【讨论】:

    【解决方案2】:

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

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

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

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

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

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

    您可以在getting started section of grunt site中找到更多示例以及如何运行它们的详细说明

    【讨论】:

      【解决方案3】:

      查看此链接 http://coffeescript.org/#usage

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

      希望对您有所帮助。 :)

      【讨论】:

      • 我不相信您会阅读我的问题 :) 我当然知道,并使用 --compile 和 --watch 键。只针对一个文件夹,但我需要递归所有文件夹。
      【解决方案4】:

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

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

      这个将包含所有的咖啡脚本。

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

      然后在app和app-srccoffee -cw app app-src的根目录下编译。

      【讨论】:

        【解决方案5】:

        所以,在这种有 4 个咖啡文件夹的情况下,我有 4 个编译器实例 为他们每个人奔跑。我可以用一个实例替换它们吗?

        没有。 Coffee 编译器仅支持更改源目录路径前缀生成输出路径;它不支持添加像../ 这样的后缀。

        coffee 命令行实用程序是用 Coffescript 编写的,源代码是 very well documented,因此您可以自己修改它以添加您想要的选项。最简单的方法是简单地更改 --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 line 261

        【讨论】:

          猜你喜欢
          • 2015-10-27
          • 2014-12-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-30
          • 1970-01-01
          • 2014-10-20
          • 2014-06-04
          相关资源
          最近更新 更多