Next.jsプロジェクトをセットアップする方法
システム要件
- Node.js 18.18 以上。
- macOS、Windows(WSLを含む)、Linuxがサポートされています。
自動インストール
私たちは、すべてを自動的に設定するcreate-next-app
を使用して新しいNext.jsアプリを始めることをお勧めします。プロジェクトを作成するには、以下のコマンドを実行してください:
npx create-next-app@latest
インストール中に、次のプロンプトが表示されます:
What is your project named? my-app
Would you like to use TypeScript? No / Yes
Would you like to use ESLint? No / Yes
Would you like to use Tailwind CSS? No / Yes
Would you like your code inside a `src/` directory? No / Yes
Would you like to use App Router? (recommended) No / Yes
Would you like to use Turbopack for `next dev`? No / Yes
Would you like to customize the import alias (`@/*` by default)? No / Yes
What import alias would you like configured? @/*
プロンプトが完了すると、create-next-app
はあなたのプロジェクト名でフォルダを作成し、必要な依存関係をインストールします。
手動インストール
手動で新しいNext.jsアプリを作成するには、必要なパッケージをインストールします:
npm install next@latest react@latest react-dom@latest
package.json
ファイルを開き、以下のscripts
を追加してください:
{
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
}
}
これらのスクリプトは、アプリケーションの開発のさまざまな段階を参照しています:
dev
:next dev
を実行して、Next.jsを開発モードで開始しますbuild
:next build
を実行して、アプリケーションを本番環境用にビルドしますstart
:next start
を実行して、Next.jsの本番サーバーを開始しますlint
:next lint
を実行して、Next.jsの組み込みESLint構成を設定します
app
ディレクトリを作成する
Next.jsはファイルシステムルーティングを使用しており、アプリケーション内のルートはファイルの構造によって決まります。
app
フォルダを作成し、次にlayout.tsx
とpage.tsx
ファイルを追加します。これらは、ユーザーがアプリケーションのroot(/
)にアクセスしたときに表示されます。
Root レイアウトをapp/layout.tsx
内に作成し、必要な<html>
と<body>
タグを含めます:
- TypeScript
- JavaScript
export default function RootLayout({
children,
}: {
children: React.ReactNode
}) {
return (
<html lang="ja">
<body>{children}</body>
</html>
)
}
export default function RootLayout({ children }) {
return (
<html lang="ja">
<body>{children}</body>
</html>
)
}
最後に、初期コンテンツのあるホームページapp/page.tsx
を作成します:
- TypeScript
- JavaScript
export default function Page() {
return <h1>Hello, Next.js!</h1>
}
export default function Page() {
return <h1>Hello, Next.js!</h1>
}
Good to know:
layout.tsx
を作成し忘れた場合、next dev
で開発サーバーを実行すると、Next.jsが自動的にこのファイルを作成します- プロジェクトのrootに
src
ディレクトリを使用して、アプリケーションのコードを設定ファイルから分離することができます
public
フォルダを作成する(オプション)
プロジェクトのrootにpublic
フォルダを作成して、画像、フォントなどの静的アセットを保存することができます。public
内のファイルは、それ以降コード内で基準URL(/
)から参照することができます。
開発サーバーを実行する
npm run dev
を実行して、開発サーバーを開始します。http://localhost:3000
にアクセスして、アプリケーションを表示します。app/page.tsx
ファイルを編集して保存し、ブラウザで更新された結果を確認します。
TypeScriptを設定する
最低限のTypeScriptバージョン:
v4.5.2
Next.jsは、組み込みのTypeScriptサポートを備えています。プロジェクトにTypeScriptを追加するには、ファイルの形式を.ts
または.tsx
に変更します。next dev
を実行すると、Next.jsが必要な依存関係を自動的にインストールし、推奨構成オプションを含むtsconfig.json
ファイルを追加します。
Good to know:
- すでに
jsconfig.json
ファイルを持っている場合は、古いjsconfig.json
から新しいtsconfig.json
にpaths
コンパイラオプションをコピーし、古いjsconfig.json
ファイルを削除します。
IDEプラグイン
Next.jsには、カスタムTypeScriptプラグインと型チェッカーが含まれており、VSCodeおよび他のコードエディタで高度な型検査と自動補完を利用できます。
VS Codeでこのプラグインを有効にするには、以下の手順に従ってください:
- コマンドパレットを開く(
Ctrl/⌘
+Shift
+P
) - 「TypeScript: Select TypeScript Version」を検索
- 「Use Workspace Version」を選択
これでファイルを編集すると、カスタムプラグインが有効になります。next build
を実行すると、カスタム型チェッカーが使用されます。
TypeScript構成ページでは、プロジェクトでTypeScriptを使用する方法についてさらに詳しく知ることができます。
ESLintを設定する
Next.jsは組み込みのESLintを備えており、create-next-app
で新しいプロジェクトを作成する際に必要なパッケージを自動的にインストールし、適切な設定を行います。
既存のプロジェクトにESLintを追加するには、package.json
にnext lint
をスクリプトとして追加します:
{
"scripts": {
"lint": "next lint"
}
}
その後、npm run lint
を実行すると、インストールおよび設定プロセスがガイドされます。
pnpm lint
次のようなプロンプトが表示されます:
? How would you like to configure ESLint?
❯ Strict (recommended)
Base
Cancel
- Strict: Next.jsの基本的なESLint構成と、より厳格なCore Web Vitalsルールセットを含みます。初めてESLintを設定する開発者には、この設定が推奨されます
- Base: Next.jsの基本的なESLint構成を含みます
- Cancel: どのESLint構成も含まれません。このオプションは独自のカスタムESLint構成を設定する予定がある場合にのみ選択してください
2つの構成オプションのいずれかが選択されると、Next.jsは自動的にeslint
とeslint-config-next
をアプリケーションの依存関係としてインストールし、プロジェクトのrootに選択した構成を含む.eslintrc.json
ファイルを作成します。
ESLintを実行してエラーを検出したい時はいつでもnext lint
を実行できます。ESLintが設定されると、毎回のビルド(next build
)中にも自動的に実行されます。エラーはビルドを失敗させ、警告はビルドを失敗させません。
ESLint Pluginページでは、プロジェクトでESLintを設定する方法についてさらに詳しく知ることができます。
絶対インポートとモジュールパスエイリアスを設定する
Next.jsは、tsconfig.json
およびjsconfig.json
ファイルの"paths"
および"baseUrl"
オプションをサポートしています。これらのオプションを利用することで、プロジェクトディレクトリを絶対パスにエイリアスし、モジュールのインポートをより簡単にすることができます。例:
// 変更前
import { Button } from '../../../components/button'
// 変更後
import { Button } from '@/components/button'
絶対インポートを設定するには、tsconfig.json
またはjsconfig.json
ファイルにbaseUrl
構成オプションを追加します。例:
{
"compilerOptions": {
"baseUrl": "src/"
}
}
また、baseUrl
パスを構成するほかに、"paths"
オプションを使ってモジュールパスを"エイリアス"することができます。
例として、次の構成は@/components/*
をcomponents/*
にマッピングします:
{
"compilerOptions": {
"baseUrl": "src/",
"paths": {
"@/styles/*": ["styles/*"],
"@/components/*": ["components/*"]
}
}
}
各"paths"
はbaseUrl
の場所に対して相対的です。例:
- TypeScript
- JavaScript
import Button from '@/components/button'
import '@/styles/styles.css'
export default function HomePage() {
return (
<div>
<h1>Hello World</h1>
<Button />
</div>
)
}
import Button from '@/components/button'
import '@/styles/styles.css'
export default function HomePage() {
return (
<div>
<h1>Hello World</h1>
<Button />
</div>
)
}