0Pricing
React Academy · レッスン

React Appsを含むNx Monorepoの作成

Nx workspaceをscaffoldし、React appsを追加してproject graphを理解します。

「React Appsを含むNx Monorepoの作成」はCoddyKit上の無料React Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはReact Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 React Academyコースには全4レッスンが含まれています。

Nx とは

Nx はモノレポ向けのスマートなビルドシステムです。変更の影響を受ける範囲に基づくタスク実行(変更されたものだけをビルド/テスト)、キャッシュ(変更されていないタスクを再実行しない)、アプリやライブラリの雛形を作成するジェネレーターを提供します。

新しい Nx ワークスペースを作成する

React 用にあらかじめ設定された新しい Nx ワークスペースの雛形を作成します。

# Create workspace:
npx create-nx-workspace@latest myorg --preset=react-monorepo
# or for Next.js:
npx create-nx-workspace@latest myorg --preset=next

ワークスペースの構造

Nx はコードをapps/(デプロイ可能なアプリケーション)とlibs/(共有ライブラリ)に整理します。各プロジェクトには、タスクターゲットを定義する独自のproject.jsonがあります。

myorg/
  apps/
    web/           # React SPA
    admin/         # Admin React SPA
    api/           # NestJS backend
  libs/
    ui/            # shared UI components
    data-access/   # data fetching hooks
    utils/         # shared utilities
  nx.json          # workspace config
  package.json     # single package.json

React アプリを追加する

Nx の React ジェネレーターを使って、設定がすべて接続済みの新しいアプリを追加します。

# Add a new React app:
npx nx generate @nx/react:app customer-portal

# Add a Next.js app:
npx nx generate @nx/next:app marketing

タスクを実行する

個別のプロジェクトまたはすべてのプロジェクトに対して、build、test、lint、serve を実行します。

# Serve a specific app:
npx nx serve web

# Build all apps:
npx nx run-many --target=build --all

# Test a specific library:
npx nx test ui

プロジェクトグラフ

nx graphを実行すると、すべてのアプリとライブラリ、およびそれらの依存関係をインタラクティブに可視化できます。どのプロジェクトがどのライブラリに依存しているかを確認できます。

npx nx graph

Nx のキャッシュ

Nx はタスクの出力をローカルにキャッシュします。変更されていないタスクを再実行すると、キャッシュが即座に使われます。Nx Cloud を使うと、チームメンバーと CI で共有するリモートキャッシュに拡張できます。

# First run: builds and caches
npx nx build web  # ~30s

# Second run (no changes): cache hit
npx nx build web  # <1s — served from cache

タスクパイプライン

nx.jsonでタスクの依存関係を定義します。buildを実行すると、先にすべての上流の依存関係に対するbuildが自動的に実行されます。

// nx.json
{
  "targetDefaults": {
    "build": {
      "dependsOn": ["^build"], // run dependency builds first
      "cache": true
    },
    "test": {
      "cache": true
    }
  }
}

制約適用用タグ

プロジェクトにタグ(例:scope:ui、type:app)を付け、ESLintルールを使って、あるアプリが別のアプリの内部コードをインポートできないようにします。

// project.json
{
  "tags": ["scope:web", "type:app"]
}

// .eslintrc.json
{
  "rules": {
    "@nx/enforce-module-boundaries": ["error", {
      "depConstraints": [
        { "sourceTag": "type:app", "onlyDependOnLibsWithTags": ["type:lib"] }
      ]
    }]
  }
}

TypeScriptのパスエイリアス

Nxはtsconfig.base.jsonにパスエイリアスを自動設定するため、深い相対パスの代わりに@myorg/uiとして共有ライブラリをインポートできます。

// tsconfig.base.json (auto-generated)
{
  "compilerOptions": {
    "paths": {
      "@myorg/ui": ["libs/ui/src/index.ts"],
      "@myorg/utils": ["libs/utils/src/index.ts"]
    }
  }
}

// Usage in apps:
import { Button } from '@myorg/ui';

小テスト

Nxモノレポで nx affected --target=build を実行すると、何が行われますか?

まとめ

create-nx-workspaceでNxワークスペースを作成します。アプリとライブラリにはnx generateを、タスクにはnx serve/build/testを使用し、CIでは変更されたプロジェクトだけを処理するためにnx affectedを使用します。キャッシュにより、変更されていないタスクはすぐに結果を返します。

よくある質問

「React Appsを含むNx Monorepoの作成」レッスンは無料ですか?

はい。「React Appsを含むNx Monorepoの作成」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、React Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 React Academyコースには全4レッスンが含まれています。

「React Appsを含むNx Monorepoの作成」で何を学びますか?

Nx workspaceをscaffoldし、React appsを追加してproject graphを理解します。 ブラウザで直接実行するハンズオンコードでReact Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

React Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのReact Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「React Appsを含むNx Monorepoの作成」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このReact Academyレッスンでコードを書いて実行できますか?

はい。すべてのReact Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. React Appsを含むNx Monorepoの作成
  2. 共有LibrariesとInternal Packages
  3. Nx Affected CommandsとCaching
  4. Code GeneratorsとWorkspace Automation
← React Academyに戻る