我的用例如下:
我决定尝试一些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);
答案 0 :(得分:5)
编译器不支持此功能。请参阅:https://github.com/jashkenas/coffee-script/issues/2215
但为什么不用coffee
来运行呢?
#!/usr/bin/env coffee
console.log 'Hello World'
然后运行./my_code.coffee
。 coffee
可执行文件只是节点的包装器,几乎可以在所有情况下使用。
或者创建某种构建系统,在编译步骤之后对其进行处理。但你真的不需要。
答案 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等)脚本需要。