絶対インポートとモジュールパスエイリアス
Next.jsはtsconfig.json
とjsconfig.json
ファイルの"paths"
および"baseUrl"
オプションを組み込みでサポートしています。
これらのオプションを使用すると、プロジェクトディレクトリを絶対パスにエイリアス化でき、モジュールのインポートが容易になります。例えば:
// 変更前
import { Button } from '../../../components/button'
// 変更後
import { Button } from '@/components/button'
補足:
create-next-app
はこれらのオプションを設定するよう促します。
絶対インポート
baseUrl
設定オプションを使用すると、プロジェクトのルートから直接インポートできます。
設定例:
{
"compilerOptions": {
"baseUrl": "."
}
}
import Button from 'components/button'
export default function HomePage() {
return (
<>
<h1>Hello World</h1>
<Button />
</>
)
}
import Button from 'components/button'
export default function HomePage() {
return (
<>
<h1>Hello World</h1>
<Button />
</>
)
}
モジュールエイリアス
baseUrl
パスの設定に加えて、"paths"
オプションを使用してモジュールパスを「エイリアス」化できます。
例えば、次の設定は@/components/*
をcomponents/*
にマッピングします:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/components/*": ["components/*"]
}
}
}
import Button from '@/components/button'
export default function HomePage() {
return (
<>
<h1>Hello World</h1>
<Button />
</>
)
}
import Button from '@/components/button'
export default function HomePage() {
return (
<>
<h1>Hello World</h1>
<Button />
</>
)
}
各"paths"
はbaseUrl
の位置からの相対パスです。例えば:
// tsconfig.json または jsconfig.json
{
"compilerOptions": {
"baseUrl": "src/",
"paths": {
"@/styles/*": ["styles/*"],
"@/components/*": ["components/*"]
}
}
}
// pages/index.js
import Button from '@/components/button'
import '@/styles/styles.css'
import Helper from 'utils/helper'
export default function HomePage() {
return (
<Helper>
<h1>Hello World</h1>
<Button />
</Helper>
)
}