TypeScript
ts-node

ts-node で実行時に tsconfig.json の paths(alias) 設定が効かない

環境

ディレクトリ構造

tree
 .
├── index.ts
└── helpers
    ├── foo.ts # {foo: ...}
    └── bar.ts # {bar: ...}

依存インストール

yarn add -D typescript ts-node
yarn run tsc --init

TypeScript 設定

helpers/fooという感じでインポートできるようにこんな感じに設定。(この辺の設定について |> TypeScriptでaliasなパスでmoduleをimportできるように)

tsconfig.json
{
  "compilerOptions": {
    "baseUrl": "./",
    "paths": {
      "helpers/*": ["helpers/*"]
    }
  }
}

確認ファイル

index.ts
import {foo} from 'helpers/foo';
import {bar} from 'helpers/bar';

こんな感じで、yarn run ts-node index.tsとすればできる…ハズだった。

なんかできない

stderr
Error: Cannot find module 'helpers/foo'

ググる

おー、tsconfig.json/paths not working with ts-nodeというイシューがありました。

とりあえずこのtsconfig-pathsっていうの使ってみる…

yarn add -D tsconfig-paths
yarn run ts-node -r tsconfig-paths/register index.ts

ターーン!!?!?!!!!?!😇

解決しました。