如何使coffeescript编译器忽略源文件的一部分?

时间:2013-05-07 18:52:48

标签: javascript node.js coffeescript

我的用例如下:

我决定尝试一些nodejs项目的coffeescript,我希望我的一些源文件以#!/usr/bin/env node

开头

Coffeescript将以#开头的行视为评论。

我知道你可以在.coffee中嵌入js代码,但事实并非如此,因为

file.coffee

`#!/usr/bin/env node`

 foo = 'bar'

编译为: file.js

(function() {
  #!/usr/bin/env node;
  var foo;

  foo = 'bar';

}).call(this);

2 个答案:

答案 0 :(得分:5)

编译器不支持此功能。请参阅:https://github.com/jashkenas/coffee-script/issues/2215

但为什么不用coffee来运行呢?

#!/usr/bin/env coffee
console.log 'Hello World'

然后运行./my_code.coffeecoffee可执行文件只是节点的包装器,几乎可以在所有情况下使用。


或者创建某种构建系统,在编译步骤之后对其进行处理。但你真的不需要。

答案 1 :(得分:0)

尽管你可以 - 正如亚历克斯·韦恩所建议的那样 - 你可以根据需要手动将shebang预先添加到文件中。

我为我的一个项目所做的是制作一个非常小的带有she-bang的JS脚本,它加载了从CoffeeScript编译的JS代码。请参阅此文件https://github.com/meryn/jumpstart/blob/master/bin/jumpstart。这很有效。

这样做的另一个好处是更容易测试。您不必启动新的子进程来运行代码。相反,您可以使用调用run函数,或者您已调用它。这当然留下了传递适当参数的问题。我这样做是通过使run函数(参见https://github.com/meryn/jumpstart/blob/master/src/run.coffee for source)委托几乎所有内容到runWith函数,它可以传递所有输入变量(environment,cli args等)脚本需要。