プライベートで開発中のVite × Reactアプリケーション。それなりの規模になってきて、そろそろ相対パスでimportするのが辛くなってきた。。
import { PicturesApi } from '../../../api'; import { useApiRequest } from '../../../hooks/useApiRequest'; ...
そこで今回は、パスエイリアスを設定してこの辛みから逃れてみます。
大まかには以下の2通りがありそう。
vite.config.tsにを記述し、それとtsconfig.jsonでのパスエイリアス設定を組み合わせて設定する方法です。
vite.config.tsexport default defineConfig({ resolve: { alias: [ { find: '@picture-app/', replacement: `${__dirname}/src/` }, ], }, plugins: [react()], });
tsconfig.json{ "compilerOptions": { "baseUrl": "./", "paths": { "@picture-app/*": ["src/*"], }, ...
この手法での主な注意点は、
こと。
2つ目はを利用した設定方法です。まずは該当パッケージをインストール。
npm i -D vite-tsconfig-paths
vite.config.tsimport react from '@vitejs/plugin-react'; import { defineConfig } from 'vite'; import tsconfigPaths from 'vite-tsconfig-paths'; export default defineConfig({ plugins: [react()], plugins: [react(), tsconfigPaths()], });
tsconfig.json{ "compilerOptions": { "baseUrl": "./", "paths": { "@picture-app/*": ["src/*"], }, ...
こちらの手法だと、パスエイリアスに関する設定記述はtsconfig.jsonの側に一元化することができるので、時間が経つごとにありがたみが増しそう。ということで今回はこちらの手法を選択しました。
Path Autocompleteの拡張機能を入れつつ、以下のように設定を追加することで補完も効かせられます。
.vscode/settings.json{ "path-autocomplete.pathMappings": { "@picture-app": "${folder}/src", } ... }
ちなみにこちらは末尾のを気にしなくてもOK。
https://chaika.hatenablog.com/entry/2022/05/14/083000
https://github.com/KiKiKi-KiKi/ts-react-app#gear-vscode-settings-for-auto-completion-of-path-aliases