🛠

便利にカスタマイズした Node REPL を起動する

2022/12/23に公開

js の挙動を確かめたいときに, ターミナルを開いて node コマンドでインタラクティブシェルを起動することがよくあります。
その時に util 関数を使いたくなることがあるので、事前にロードされてる環境を作ってみました。

repl モジュールの作成

title=index.js
import lodash from 'lodash'
import kit from '@elzup/kit'
import repl from 'repl'

// start message
console.log('anozon node repl (^•ω•^)')

const r = repl.start({ prompt: 'node> ' })

Object.defineProperty(r.context, '_', {
  enumerable: true,
  value: lodash,
})

r.context.kit = kit
> node index.js
anozon node repl (^•ω•^)
node> _.range(5)
[ 0, 1, 2, 3, 4 ]

_r.context._ = lodash 直接代入するとエラーが出るので Object.defineProperty を使います。

ローカルのコマンドに登録する

コマンド名(例 anode)を package.json にセットアップし、グローバルにインストールします。

title=package.json
{
  "description": "personal custom node REPL",
  "main": "index.js",
  "type": "module",
  "bin": {
    "anode": "index.js"
  }
}
> npm i -g .
> anode
anozon node repl (^•ω•^)
node>

起動メッセージや prompt もいじれるので、好みに合わせてカスタマイズできます。

サンプルリポジトリ:
elzup/anode-repl: personal custom node REPL

GitHubで編集を提案

Discussion