这是我的代码
#!/bin/bash
coffee --output ./js --compile ./
coffee --output ./js/public/ --compile ./public/
当我运行这个bash脚本时,有一个名为" blic"的文件夹。在js/
目录中创建的。我假设它的一半是" public"。它为什么被创建?
答案 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/
中的合理结构)。
我们在这里看到三件事:
coffee --output js --compile .
有效,因此您可以这样做,而不是使用./
。coffee
单独遍历目录树。 docs对此行为并不十分清楚,但示例表明了这一点。我在coffee
中称这是一个错误,但至少你有一些解决方法。