4

私が行った場合

repl = require 'repl'

repl.start {useGlobal: true}

Nodereplを開始します。代わりにCoffeeScriptreplを開始するにはどうすればよいですか?

ありがとう

4

2 に答える 2

5

coffee-scriptこのモジュールは、Nodeモジュールのように、プログラムで使用するREPL機能をエクスポートしないと思いますrepl。ただし、CoffeeScriptには、メインモジュールrepl.coffeeにエクスポートされていなくても、使用できるファイルがあります。(コマンドを実行したときに実行されるファイル)からヒントcoffee-scriptを得ると、ファイルを要求するだけでREPLが機能することがわかります。したがって、このスクリプトを実行すると、CoffeeScriptREPLが開始されます。command.coffeecoffeerepl

require 'coffee-script/lib/coffee-script/repl'

ただし、このアプローチは非常にハッキーです。coffee-script最も重要な欠陥は、モジュールが内部でどのように機能し、どのように編成されているかに大きく依存することです。repl.coffeeファイルの移動coffee-script/lib/coffee-scriptや動作の変更を妨げるものは何もありません。

coffeeより良いアプローチは、コマンドラインからノードから行うのと同じように、引数なしでコマンドを呼び出すことです。

{spawn} = require 'child_process'
spawn 'coffee', [], stdio: 'inherit'

このstdio: 'inherit'オプションは、生成されたコマンドがstdinから読み取り、現在のプロセスのstdoutに書き込むようにします。

于 2012-10-10T06:24:34.400 に答える
5

Neshは、これを少し簡単で拡張可能にするためのプロジェクトです。

http://danielgtaylor.github.com/nesh/

これは、CoffeeScriptなどの複数の言語をサポートするREPLを埋め込む方法を提供するだけでなく、非同期プラグインアーキテクチャ、起動時にREPLのコンテキストでコードを実行するためのサポートなどを提供します。例:

nesh = require 'nesh'

nesh.loadLanguage 'coffee'

nesh.start (err, repl) ->
    nesh.log.error err if err

また、デフォルトのプラグインで一連のオプションをサポートし、いくつかの組み込みの便利な関数も公開します。

opts =
    welcome: 'Welcome to my interpreter!'
    prompt: '> '
    evalData: CoffeeScript.compile 'hello = (name="world") -> "Hello, #{world}!"', {bare: true}

nesh.start opts, (err, repl) ->
    nesh.log.error err if err
于 2013-04-05T16:12:51.380 に答える