新しいNext.jsアプリケーションを作成する
システム要件
開始する前に、システムが以下の要件を満たしていることを確認してください:
- Node.js 18.18 以降
- macOS、Windows(WSLを含む)、またはLinux
自動インストール
新しいNext.jsアプリを作成する最も簡単な方法は、create-next-app
を使用することです。これにより、すべてが自動的にセットアップされます。プロジェクトを作成するには、以下を実行します:
npx create-next-app@latest
インストール中に以下のプロンプトが表示されます:
プロジェクト名を入力してください? my-app
TypeScriptを使用しますか? No / Yes
ESLintを使用しますか? No / Yes
Tailwind CSSを使用しますか? No / Yes
コードを`src/`ディレクトリ内に配置しますか? No / Yes
App Routerを使用しますか? (推奨) No / Yes
`next dev`にTurbopackを使用しますか? No / Yes
インポートエイリアスをカスタマイズしますか? (`@/*`がデフォルト) No / Yes
どのインポートエイリアスを設定しますか? @/*
プロンプトの後、create-next-app
はプロジェクト名のフォルダを作成し、必要な依存関係をインストールします。
手動インストール
新しいNext.jsアプリを手動で作成するには、必要なパッケージをインストールします:
npm install next@latest react@latest react-dom@latest
次に、以下のスクリプトをpackage.json
ファイルに追加します:
{
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
}
}
これらのスクリプトは、アプリケーション開発のさまざまな段階を参照しています:
next dev
: 開発サーバーを起動しますnext build
: 本番用にアプリケーションをビルドしますnext start
: 本番サーバーを起動しますnext lint
: ESLintを実行します
pages
ディレクトリの作成
Next.jsはファイルシステムベースのルーティングを使用しており、アプリケーション内のルートはファイルの構造によって決定されます。
プロジェクトのルートにpages
ディレクトリを作成します。次に、pages
フォルダ内にindex.tsx
ファイルを追加します。これがホームページ(/
)になります:
export default function Page() {
return <h1>Hello, Next.js!</h1>
}
export default function Page() {
return <h1>Hello, Next.js!</h1>
}
次に、pages/
内に_app.tsx
ファイルを追加してグローバルレイアウトを定義します。カスタムAppファイルについて詳しく学びましょう。
import type { AppProps } from 'next/app'
export default function App({ Component, pageProps }: AppProps) {
return <Component {...pageProps} />
}
export default function App({ Component, pageProps }) {
return <Component {...pageProps} />
}
最後に、pages/
内に_document.tsx
ファイルを追加して、サーバーからの初期レスポンスを制御します。カスタムDocumentファイルについて詳しく学びましょう。
import { Html, Head, Main, NextScript } from 'next/document'
export default function Document() {
return (
<Html>
<Head />
<body>
<Main />
<NextScript />
</body>
</Html>
)
}
import { Html, Head, Main, NextScript } from 'next/document'
export default function Document() {
return (
<Html>
<Head />
<body>
<Main />
<NextScript />
</body>
</Html>
)
}
public
フォルダの作成(オプション)
プロジェクトのルートにpublic
フォルダを作成して、画像、フォントなどの静的アセットを保存します。public
内のファイルは、ベースURL(/
)から始まるパスでコードから参照できます。
これらのアセットはルートパス(/
)を使用して参照できます。例えば、public/profile.png
は/profile.png
として参照できます:
import Image from 'next/image'
export default function Page() {
return <Image src="/profile.png" alt="Profile" width={100} height={100} />
}
import Image from 'next/image'
export default function Page() {
return <Image src="/profile.png" alt="Profile" width={100} height={100} />
}
開発サーバーの実行
npm run dev
を実行して開発サーバーを起動しますhttp://localhost:3000
にアクセスしてアプリケーションを表示しますpages/index.tsx
ファイルを編集して保存し、ブラウザで更新された結果を確認します
TypeScriptのセットアップ
TypeScriptの最小バージョン:
v4.5.2
Next.jsにはTypeScriptサポートが組み込まれています。プロジェクトにTypeScriptを追加するには、ファイルを.ts
/ .tsx
にリネームしてnext dev
を実行します。Next.jsは必要な依存関係を自動的にインストールし、推奨設定オプションを含むtsconfig.json
ファイルを追加します。
詳細についてはTypeScriptリファレンスページを参照してください。
ESLintのセットアップ
Next.jsにはESLintが組み込まれています。create-next-app
で新しいプロジェクトを作成すると、必要なパッケージが自動的にインストールされ、適切な設定が行われます。
既存のプロジェクトに手動でESLintを追加するには、next lint
をスクリプトとしてpackage.json
に追加します:
{
"scripts": {
"lint": "next lint"
}
}
次に、npm run lint
を実行すると、インストールと設定プロセスがガイドされます。
npm run lint
以下のようなプロンプトが表示されます:
? ESLintをどのように設定しますか?
❯ Strict (推奨)
Base
Cancel
- Strict: Next.jsの基本ESLint設定に加えて、より厳格なCore Web Vitalsルールセットを含みます。ESLintを初めて設定する開発者に推奨される設定です
- Base: Next.jsの基本ESLint設定を含みます
- Cancel: 設定をスキップします。独自のカスタムESLint設定を計画している場合はこのオプションを選択してください
Strict
またはBase
が選択された場合、Next.jsは自動的にeslint
とeslint-config-next
を依存関係としてインストールし、選択した設定を含む.eslintrc.json
ファイルをプロジェクトのルートに作成します。
ESLintを実行してエラーを検出するには、next lint
を実行します。ESLintが設定されると、ビルド時(next build
)にも自動的に実行されます。エラーはビルドを失敗させますが、警告は失敗させません。
詳細についてはESLintプラグインページを参照してください。
絶対インポートとモジュールパスエイリアスの設定
Next.jsはtsconfig.json
とjsconfig.json
ファイルの"paths"
および"baseUrl"
オプションをサポートしています。
これらのオプションを使用すると、プロジェクトディレクトリを絶対パスにエイリアスできるため、モジュールのインポートがより簡単でクリーンになります。例えば:
// 変更前
import { Button } from '../../../components/button'
// 変更後
import { Button } from '@/components/button'
絶対インポートを設定するには、baseUrl
設定オプションをtsconfig.json
またはjsconfig.json
ファイルに追加します。例えば:
{
"compilerOptions": {
"baseUrl": "src/"
}
}
baseUrl
パスを設定するのに加えて、"paths"
オプションを使用してモジュールパスを"alias"
できます。
例えば、以下の設定は@/components/*
をcomponents/*
にマッピングします:
{
"compilerOptions": {
"baseUrl": "src/",
"paths": {
"@/styles/*": ["styles/*"],
"@/components/*": ["components/*"]
}
}
}
各"paths"
はbaseUrl
の場所からの相対パスです。