Denoでimportしているnpmパッケージの型定義をIntelliJIDEAに認識させる
Denoはv1.28でnpmパッケージに対応したが、Denoプラグインを入れたIntelliJ IDEAはnpmパッケージの型定義を素直には認識してくれない
おそらくDenoのキャッシュディレクトリを見に行っているのだが、npmパッケージのimport形式
code:typescript
import * as neverthrow from "npm:neverthrow"
にプラグインが対応していないからだと思われる。
そこで、次の手順を実行することで認識してくれなかった型定義を認識させることができる
deno cache --node-modules-dirを実行する
import_map.jsonを作成し、Node.jsで読み込むときと同じような形式にする
ポイントは2点あり、
deno cache --node-modules-dirを実行することでプロジェクトのルートディレクトリにnode_modulesが生成される
node_modules内に存在する型定義を認識させたいパッケージ名とimport先を一致させる
これを実現するためにimport_map.jsonを作成してDeno本来のimport形式とNode.jsライクのimport形式を一致させている
である。こうすることで、IntelliJ IDEAは「お!node_modulesがあるじゃん〜」と意気揚々と型定義から補完を効かせてくれるようになる。
実際にはコードは以下のようになる
code:main.ts
import {Result, ok, err} from "neverthrow"
code:import_map.json
{
"imports": {
"neverthrow": "npm:neverthrow@6.0.0"
}
}