编译我的coffeescript项目时创建的奇怪文件夹

时间:2014-04-27 04:29:04

标签: bash coffeescript

这是我的代码

#!/bin/bash
coffee --output ./js  --compile ./
coffee --output ./js/public/ --compile ./public/

当我运行这个bash脚本时,有一个名为" blic"的文件夹。在js/目录中创建的。我假设它的一半是" public"。它为什么被创建?

1 个答案:

答案 0 :(得分:1)

给定这样的目录结构:

a.coffee
abcdefgh/
    c.coffee
public/
    b.coffee

如果我说coffee --output ./js --compile ./,我会得到这样的结构:

js/
    a.js
    blic/
        b.js
    cdefgh/
        c.js

如果我说coffee --output ./jsx --compile ./,我会得到这样的结构:

jsx/
    a.js
    blic/
        b.js
    cdefgh/
        c.js

它仍然只剥离前两个角色。这表明./源目录(长度为2)使coffee混淆./js而不是./jsx的{​​{1}}或--output参数。

但是,如果我说coffee --output ./js --compile .,那么我明白了:

js/
    a.js
    public/
        b.js
    abcdefgh/
        c.js

显然,coffee正确地将.解释为当前目录,但将./视为某种类型的双字符前缀。这给你一个解决这个奇怪问题的工作。

如果我将CoffeeScript文件移动到他们自己的目录:

cs/
    a.coffee
    abcdefgh/
        c.coffee
    public/
        b.coffee

并从包含coffee --output js --compile cs的目录中说出cs/,我得到与coffee --output ./js --compile .相同的输出(即cs/中的合理结构)。

我们在这里看到三件事:

  1. coffee --output js --compile .有效,因此您可以这样做,而不是使用./
  2. 如果将CS和JS文件保存在不同的目录中,一切都会正常工作。
  3. 您不需要将子目录与其父目录分开编译,coffee单独遍历目录树。 docs对此行为并不十分清楚,但示例表明了这一点。
  4. 我在coffee中称这是一个错误,但至少你有一些解决方法。