🈂️

環境変数`NODE_OPTIONS`はts-nodeでも使える。便利。

2023/02/14に公開

環境変数NODE_OPTIONSに指定したオプションはNode.jsのコマンドラインオプションとして渡すことができます。

NODE_OPTIONS='--require "./a.js"' node --require "./b.js"
# is equivalent to:
node --require "./a.js" --require "./b.js"

https://nodejs.org/dist/latest-v18.x/docs/api/cli.html#node_optionsoptions

NODE_OPTIONSに指定できるオプション

NODE_OPTIONSに指定できるオプションはこちら
https://nodejs.org/dist/latest-v18.x/docs/api/cli.html#node_optionsoptions

Node.jsの全てのコマンドラインオプションを指定できるわけではありません。
Node.jsのコマンドラインオプション一覧はこちら
https://nodejs.org/dist/latest-v18.x/docs/api/cli.html

例えば、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

https://nodejs.org/en/docs/guides/debugging-getting-started/

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

https://nodejs.org/api/cli.html#cli_node_options_options:~:text=(in megabytes)-,%23,-Sets the max

以上です。

GitHubで編集を提案

Discussion