私が行った場合
repl = require 'repl'
repl.start {useGlobal: true}
Nodereplを開始します。代わりにCoffeeScriptreplを開始するにはどうすればよいですか?
ありがとう
私が行った場合
repl = require 'repl'
repl.start {useGlobal: true}
Nodereplを開始します。代わりにCoffeeScriptreplを開始するにはどうすればよいですか?
ありがとう
coffee-script
このモジュールは、Nodeモジュールのように、プログラムで使用するREPL機能をエクスポートしないと思いますrepl
。ただし、CoffeeScriptには、メインモジュールrepl.coffee
にエクスポートされていなくても、使用できるファイルがあります。(コマンドを実行したときに実行されるファイル)からヒントcoffee-script
を得ると、ファイルを要求するだけでREPLが機能することがわかります。したがって、このスクリプトを実行すると、CoffeeScriptREPLが開始されます。command.coffee
coffee
repl
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に書き込むようにします。
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