🈂️
環境変数`NODE_OPTIONS`はts-nodeでも使える。便利。
環境変数NODE_OPTIONS
に指定したオプションはNode.jsのコマンドラインオプションとして渡すことができます。
NODE_OPTIONS='--require "./a.js"' node --require "./b.js" # is equivalent to: node --require "./a.js" --require "./b.js"
NODE_OPTIONS
に指定できるオプション
NODE_OPTIONS
に指定できるオプションはこちら
Node.jsの全てのコマンドラインオプションを指定できるわけではありません。
Node.jsのコマンドラインオプション一覧はこちら
例えば、Node.jsの実行時のリソース状況を取得する--prof-process
は指定できません。以下のエラーが出力されます。
--prof is not allowed in NODE_OPTIONS
ts-nodeでTypeScript実行時にも使えます
ts-node
でTypeScriptを実行する場合でも、NODE_OPTIONS
に指定したオプションをnodeに渡すことができます。
例えば、1.TypeScriptをデバッグモードで実行したい時、2.アプリケーションに割り当てるメモリの最大値を指定したい時などに使えます。
2つのサンプル
1. TypeScriptをデバッグモードで実行したい(NODE_OPTIONS="--inspect")
デバッグモードで起動したい時は--inspect
を指定します。
NODE_OPTIONS="--inspect" ts-node index.ts
nodemonと組み合わせることで、ファイルの変更を検知して都度デバッグモードで再起動してくれます。
nodemon.json
{
"watch": [
"./"
],
"ext": "ts",
"exec": "NODE_OPTIONS=' --inspect' ts-node -r tsconfig-paths/register ./src/index.ts"
}
nodemonを実行
ファイルを保存する度に、デバッグモードで起動してくれます。
$ nodemon
[nodemon] 2.0.6
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): **/*
[nodemon] watching extensions: ts
[nodemon] starting `NODE_OPTIONS=' --inspect' ts-node -r tsconfig-paths/register ./src/index.ts`
Debugger listening on ws://127.0.0.1:9229/4bb0d228-c7c5-4538-ab25-639cd474c099
For help, see: https://nodejs.org/en/docs/inspector
app running!
[nodemon] restarting due to changes...
[nodemon] starting `NODE_OPTIONS=' --inspect' ts-node -r tsconfig-paths/register ./src/index.ts`
Debugger listening on ws://127.0.0.1:9229/8b44ed10-5161-44fd-a51b-90ddaec3ebec
For help, see: https://nodejs.org/en/docs/inspector
app running!
[nodemon] restarting due to changes...
[nodemon] starting `NODE_OPTIONS=' --inspect' ts-node -r tsconfig-paths/register ./src/index.ts`
Debugger listening on ws://127.0.0.1:9229/c7126bb8-ae97-4579-a08f-3543565e4987
For help, see: https://nodejs.org/en/docs/inspector
app running!
2. アプリケーションに割り当てるメモリの最大値を指定したい(NODE_OPTIONS="--max-old-space-size=SIZE")
アプリケーションに割り当てるメモリの最大値を指定したい時は--max-old-space-size
を指定します。
NODE_OPTIONS="--max-old-space-size=1536" ts-node index.ts
以上です。
Discussion