2

我的用例如下:

我决定为一些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);
4

2 回答 2

5

编译器不支持这个。见:https ://github.com/jashkenas/coffee-script/issues/2215

但是为什么不运行它coffee呢?

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

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


或者创建某种构建系统,在编译步骤之后附加它。但你不应该真的需要。

于 2013-05-07T19:04:16.713 回答
0

CoffeeScript 无法实现您想要的,尽管您可以 - 正如 Alex Wayne 建议的那样 - 如果您愿意,可以手动将 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获取源代码)几乎runWith将所有可以传递给所有输入变量(环境、cli args 等)脚本需要。

于 2013-05-07T19:44:52.883 回答