特定のディレクトリ(build)だけを同期する。
PORT=10002 REACT_APP_BACKEND_URL=http://example.com/api GENERATE_SOURCEMAP=false
バックエンドのPORTを10001、フロントエンドのPORTを10002とする。
フロントエンド側の.env.production
というファイルに
PORT=10002
を設定。
また、
REACT_APP_BACKEND_URL=http://example.com/api
のように環境変数を設定しておき、
nginxの.confで
http://example.com/api
へのアクセスを
http://localhost:10001
にプロキシーする。
(http://example.com
はフロントエンド、
http://example.com/api
はバックエンド)
GENERATE_SOURCEMAP=false
は、デバッグ用のソースマップを本番環境用のビルドでは出力しないための設定。
"scripts": { "build": "dotenv -e .env.production react-scripts build", },
package.json
で、scripts
のbuild
に
dotenv -e .env.production
を追加することで
npm run build
コマンドを実行したときに.env.production
の中身が環境変数として読み込まれる。
npm run build
npm run build
を実行するとbuild
というディレクトリが生成される。
このbuild
ディレクトリを本番環境にデプロイし、
build/index.html
へブラウザからアクセスすることで
サイトとして機能する。
git add . git commit -m 'xxx' git push
コミットしてGitHubへpushする。
ここでは、build
ディレクトリだけでなく、
src
やpublic
などのディレクトリもGitHubへpushする。
(開発環境のハードウェアが故障したときの保険としてソースコードを管理するため)
本番環境ではsparse-checkout
でbuild
ディレクトリだけpullする。
mkdir -p ~/Projects/xxx/frontend
ブラウザでGitHubへログイン。
プロジェクトのリポジトリを選択し、Code
ボタンからリポジトリのURLを取得する。
cd ~/Projects/xxx/frontend git clone --filter=blob:none --sparse https://github.com/xxx/yyy.git .
–filter=blob:none –sparse
オプションを付けてgit clone
を実行。
package.json
などの管理ファイルのみがコピーされ、
ソースコードなどはコピーされない。
git sparse-checkout init --cone
sparse-checkout
機能を有効化する。
sparse-checkout
というのは、特定のディレクトリだけをgitで同期する機能。
cat .git/info/sparse-checkout
sparse-checkout
というファイルの中身を表示。
/* !/*/
デフォルトでは、sparse-checkout
の中身は上記のようになっている。
/*
の効果により、プロジェクトディレクトリ直下のすべてのファイルは同期される。
!/*/
の効果により、すべてのディレクトリは同期しない。
git sparse-checkout set build
build
ディレクトリをgitの同期対象に設定。
cat .git/info/sparse-checkout
/* !/*/ /build/
git pull
2回目以降の同期は、git pull
コマンドを実行。