Back

React スクリプトとは?開発者向けガイド

React スクリプトとは?開発者向けガイド

Create React App(CRA)を使用して React アプリを作成したことがあれば、react-scripts を使用したことがあります。しかし、これらのスクリプトは裏側で何をしているのでしょうか?このガイドでは、react-scripts とは何か、各スクリプトが何をするのか、そしていつカスタマイズや置き換えが必要になるかを解説します。

重要ポイント

  • react-scripts は Create React App プロジェクトを動かすエンジンです
  • ビルド、開発、テストの設定をすべて処理するので、あなたが設定する必要はありません
  • より細かい制御が必要な場合は、イジェクト、オーバーライド、または置き換えることができます

react-scriptsとは?

react-scripts は Create React App(CRA)に同梱されている NPM パッケージです。React アプリケーションの実行、ビルド、テスト、リントに必要な設定とスクリプトが含まれています。Webpack、Babel、ESLint の設定ファイルを自分で書いて管理する代わりに、CRA は react-scripts を使用してその複雑さを裏側で処理します。

CRA を使用して新しい React アプリを作成すると:

npx create-react-app my-app

CRA は react-scripts をインストールし、package.json にデフォルトのスクリプトを設定します:

"scripts": {
  "start": "react-scripts start",
  "build": "react-scripts build",
  "test": "react-scripts test",
  "eject": "react-scripts eject"
}

コマンドは何をするのか?

npm start

  • Webpack Dev Server を使用して開発サーバーを実行します
  • ホットモジュールリプレイスメント(HMR)を有効にします
  • Babel と環境変数(.env から)を使用します
  • デフォルトのブラウザでアプリを開きます

npm run build

  • 本番用にアプリをコンパイルします
  • JavaScript と CSS を最小化します
  • build/ ディレクトリに静的ファイルを生成します
  • パフォーマンスを最適化します(ツリーシェイキング、圧縮)

npm test

  • Jest を使用してテストを実行します
  • デフォルトでファイルを監視します
  • カバレッジレポートとモックテストをサポートします

npm run eject

  • すべての設定と依存関係をプロジェクトにコピーします
  • Webpack、Babel、ESLint などの完全な制御を可能にします
  • 不可逆的—「元に戻す」ことはできません

react-scriptsはCRAの中でどのような役割を果たすのか?

Create React App はプロジェクト構造を構築します。しかし、アプリを実行し、バンドルをビルドし、すべての重要な処理を行うのは react-scripts です。

react-scripts なしの CRA は、すべての基礎となる設定を手動で置き換えない限り機能しません—これはまさにイジェクトした時に起こることです。

react-scriptsをオーバーライドまたは置き換えるタイミング

時には、この抽象化が制限となることがあります。以下のような場合に必要かもしれません:

  • Webpack ローダーやエイリアスをカスタマイズする
  • 異なる Babel プラグインを使用する
  • ESLint の動作を変更する

3つの選択肢があります:

1. イジェクト

npm run eject
  • 完全な制御が可能ですが、複雑で不可逆的です

2. イジェクトせずにオーバーライド

  • 以下のようなライブラリを使用します:
    • craco (Create React App Configuration Override)
    • react-app-rewired
  • これらは react-scripts をラップし、カスタム設定を注入できます

3. 完全に置き換える

  • CRA があなたのニーズに合わなくなった場合、以下を検討してください:
    • Vite
    • Next.js
    • Parcel

一般的なエラーとその修正方法

'react-scripts' is not recognized as a command

  • 通常、node_modules が見つからないことが原因です
  • 修正方法:
rm -rf node_modules
rm package-lock.json
npm install

パッケージ更新後にビルドが失敗する

  • react-scripts のバージョンが React のバージョンと一致しているか確認してください
  • 変更履歴を確認せずに react-scripts を手動でアップグレードすることは避けてください

Create React App と react-scripts は今でも関連性がありますか?

はい—初心者、学習プロジェクト、迅速なプロトタイピングには、CRA + react-scripts は設定不要で React を構築する方法を提供します。しかし、Vite や Next.js のような最新の代替手段は、より大きなアプリケーションにとって、より高速で柔軟性があり、より将来性があります。

結論

react-scripts はすべての CRA ベースの React アプリを動かすものです。複雑なツールを露出させることなく、バンドル、テスト、リントなどを処理します。始めたばかりなら、React 自体の学習に集中するのに最適な方法です。アプリが成長するにつれて、オーバーライドしたり、それを超えて移行したりすることもできます。

よくある質問

CRAアプリのためのWebpack、Babel、ESLint、Jestなど、裏側のすべてのツールを処理します。

イジェクトまたは置き換えた後にのみ可能です。置き換えずに削除すると、CRAアプリは実行できなくなります。

小規模なアプリや学習には適しています。本番アプリケーションでは、ViteやNext.jsのような最新ツールの方が適しているかもしれません。

Listen to your bugs 🧘, with OpenReplay

See how users use your app and resolve issues fast.
Loved by thousands of developers