関連する質問: Node.js で Underscore モジュールを使用する
Node.jsのREPLが最後の戻り値を設定する変数を変更する方法はありますか? _
から__
またはに変更できる場合は$_
、アンダースコアモジュールをグローバル化して、すべてのファイルで変数に設定する必要がないようにすることができます: https://gist.github.com/3220108
関連する質問: Node.js で Underscore モジュールを使用する
Node.jsのREPLが最後の戻り値を設定する変数を変更する方法はありますか? _
から__
またはに変更できる場合は$_
、アンダースコアモジュールをグローバル化して、すべてのファイルで変数に設定する必要がないようにすることができます: https://gist.github.com/3220108
repl
ネイティブ Nodeモジュールを使用してこれを行う方法を見つけました。コマンドラインで実行するだけでなく、node
これを次のように入れてconsole.js
実行しますnode console.js
。
var repl = require('repl')
var vm = require('vm');
var _;
var server = repl.start({
eval: function (cmd, context, filename, callback) {
try {
var match = cmd.match(/^\((.*)\n\)$/);
var code = match ? match[1] : cmd;
context._ = _;
var result = vm.runInThisContext(code, filename);
} catch (error) {
console.log(error.stack);
} finally {
_ = context._;
callback(null, result);
}
}
}).on('exit', function () {
process.exit(0);
});
要点は次のとおりです: https://gist.github.com/jasoncrawford/6818650
_
ソースを編集したくない限り変更できないと思います。node.js REPL は に実装されているようlib/repl.js
です。ライブラリを少し調べてみると、次のようなものが表示されます。
self.context._ = self.context[cmd] = lib;
self.outputStream.write(self.writer(lib) + '\n');
そしてこのように:
self.context._ = ret;
self.outputStream.write(self.writer(ret) + '\n');
オブジェクトは、REPLのself.context
グローバル コンテキストまたは名前空間 (window
ブラウザーと同様) であるため、REPL のプロンプトからself.context._ = ret;
言うのと同じです。_ = ret
これ_
はハードワイヤードであり、node.js ライブラリをハックしたい場合を除き、それについてできることは何もありません。