2012-02-02 145 views
4

我不是100%是什么造成这种情况,但有些东西正在通过CoffeeScript编译器(coffee.cmd)过去。我刚刚在Windows机器上安装了node.js和CoffeeScript。如果我编译这样的文件:构建正在创建'-p'文件夹

coffee.cmd -c test.coffee 

我得到的test.js完全没问题。我有一个建立在Sublime Text 2中的构建脚本,它是通用的,所以我可以从任何目录构建。当它编译,它使用文件的完整路径,像这样:

coffee.cmd -c C:\Users\Spencer\test.coffee 

现在,这个输出test.js如预期,但由于某些原因,它也创造了在同一目录空“-p” 。我不确定它为什么这样做。任何帮助都会非常赞赏。谢谢!

回答

7

我不能肯定,因为我没有Windows方便,但command.coffee有这样的:

# Write out a JavaScript source file with the compiled code. By default, files 
# are written out in `cwd` as `.js` files with the same name, but the output 
# directory can be customized with `--output`. 
writeJs = (source, js, base) -> 
    #... 
    path.exists jsDir, (exists) -> 
    if exists then compile() else exec "mkdir -p #{jsDir}", compile 

这看起来像你的问题的来源一个很好的候选人。在Unixish系统(Linux,OSX,FreeBSD,Cygwin等)上,mkdir -p将创建所需的目录和所需的任何中间目录。我怀疑标准的Windows mkdir不知道-p是什么意思,所以它代替了两个目录。

您可以修复CoffeeScript的编译器的源使用的mkdir -p的特定Windows版本的本地版本,或者你可以尝试安装Cygwin得到mkdir是知道什么-p手段。向CoffeeScript维护人员发送错误报告也会很好(但可能没有必要,因为他们会自己找到这个问题)。

+0

确实是这个问题,谢谢!我刚刚在我的本地版本中更改了command.js,但我正在考虑创建一个可检测操作系统并执行正确操作的修补程序。 – SpencerElliott 2012-02-02 14:09:38

+1

我已经在github上为任何有此问题的人提交了一个pull请求:https://github.com/jashkenas/coffee-script/pull/2091 – SpencerElliott 2012-02-02 14:28:25

+1

正如进一步的说明一样,如果您想编写删除脚本'-p'目录使用'rm -rf -p'; '--'阻止'rm'将'-p'作为标志。 – 2012-06-29 18:30:16