我有my_func.coffee文件
first = (test) ->
console.log 'first' + test
second = (test) ->
console.log 'second' + test
如何从命令行调用'second'方法?
有这样的东西会很好:
coffee my_func.coffee -e "second('test')"
答案 0 :(得分:4)
你可能在这里混淆了几件事。 Coffeescript是编译器,它将coffeescript转换为javascript。 coffeescript的eval选项告诉它读取要从命令行编译的源代码,而不是执行它。
要执行代码,您需要在某种javascript环境中运行它。 Node.js是一个受欢迎的选择。首先,创建您的coffeescript模块,将其称为MyMod.coffe
,如下所示:
module = do ->
first: (test) ->
console.log 'first' + test
second: (test) ->
console.log 'second' + test
console.log "MyMod registered", module
exports.first = module.first
exports.second = module.second
有一些额外的代码可以将该代码导出为javascript模块。使用coffee -c MyMod.coffee
进行编译。
然后您可以从命令行执行它,例如:
node -e 'var m=require("./MyMod");m.second("abcff");'
你应该得到这个:
MyMod registered { first: [Function], second: [Function] }
secondabcff
更新
似乎你可以直接运行coffeescript。如果删除已编译的MyMod.js
文件以便只放置MyMod.coffee,则可以执行以下操作:
node -e 'require("coffee-script");var m=require("./MyMod");m.second("abcff");'
获得相同的输出。这假定当然安装了coffee-script模块。
<强>更新强>
您也可以直接运行coffee
可执行文件:
coffee -e 'm = require("./MyMod"); m.second("abcff")'