Lang x Lang

Absolute Imports and Module Path Aliases

Examples

Next.js は、tsconfig.jsonおよびjsconfig.jsonファイルの"paths"および"baseUrl"の options を組み込みでサポートしています。"

これらの options を使用すると、プロジェクトのディレクトリを絶対 paths にエイリアス設定でき、import modules を容易にします。例えば:

// before
import { Button } from "../../../components/button";

// after
import { Button } from "@/components/button";

Good to know: create-next-appは、これらの options を設定するように prompt します。

Absolute Imports

baseUrl設定オプションは、プロジェクトの root から直接 import することを可能にします。

この設定の一例:

tsconfig.json
{
  "compilerOptions": {
    "baseUrl": "."
  }
}
components/button.tsx
export default function Button() {
  return <button>Click me</button>
}
components/button.js
export default function Button() {
  return <button>Click me</button>
}
app/page.tsx
import Button from 'components/button'

export default function HomePage() {
  return (
    <>
      <h1>Hello World</h1>
      <Button />
    </>
  )
}
app/page.js
import Button from 'components/button'

export default function HomePage() {
  return (
    <>
      <h1>Hello World</h1>
      <Button />
    </>
  )
}

Module Aliases

baseUrl path の設定に加えて、"paths"オプションを使用してモジュールの paths を「エイリアス」にすることができます。

たとえば、以下の設定では、@/components/*components/*にマッピングします:

tsconfig.json
{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/components/*": ["components/*"]
    }
  }
}
components/button.tsx
export default function Button() {
  return <button>Click me</button>
}
components/button.js
export default function Button() {
  return <button>Click me</button>
}
app/page.tsx
import Button from '@/components/button'

export default function HomePage() {
  return (
    <>
      <h1>Hello World</h1>
      <Button />
    </>
  )
}
app/page.js
import Button from '@/components/button'

export default function HomePage() {
  return (
    <>
      <h1>Hello World</h1>
      <Button />
    </>
  )
}

""paths""のそれぞれは、baseUrlの位置に対して相対的になっています。例えば:

// tsconfig.json or 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>
  );
}

当社サイトでは、Cookie を使用しています。各規約をご確認の上ご利用ください:
Cookie Policy, Privacy Policy および Terms of Use