Vite@5以降 + TypeScriptでパスエイリアスを設定する方法

Vite@5以降でエイリアスを設定するために必要な手順は以下のとおりです。

  1. viteがビルドできるように、vite.config.ts に resolve.alias を追加する
  2. エディタでインポートエラーにならないように、 tsconfig.app.jsonpathsbaseUrl を追加する
  3. ”@/” をつけてインポートする

1. vite.config.ts に resolve.alias を追加する

vite.config.ts
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react-swc";
import tailwindcss from "@tailwindcss/vite";
import path from "path";
// https://vite.dev/config/
export default defineConfig({
resolve: {
alias: {
"@": path.resolve(__dirname, "./src"),
},
},
plugins: [tailwindcss(), react()],
});

2. tsconfig.app.jsonpathsbaseUrl を追加する

viteのテンプレートバージョン5以降では、tsconfig.json ではなく、tsconfig.app.json を見ています。そのため、tsconfig.jsonにエイリアスを追加してもインポートエラーが解消されません。

tsconfig.app.json
{
"compilerOptions": {
/* alias */
"baseUrl": ".",
"paths": {
"@*": ["./src/*"]
},
"target": "ES2020",
...
}

3. インポート時に ’@/’ を使う

”@” だけではパスが解決できません。以下のように ”@/” をつけてインポートします。

import { Hoge } from '@/components/Hoge';

ただし、設定で”@“だけでなく、“@components” を追加するとスラッシュは不要になります。

Astroのデプロイが Error: This request has been automatically failed because it uses a deprecated version of `actions/upload-artifact: v3` で落ちる
オニオンアーキテクチャでドメイン知識がSQLに入るのを防ぐ方法