Craete React AppのAdvanced Configurationの環境変数を試す
Create React Appで作成したReactアプリにおいて、公式GitHubリポジトリのAdvenced Configurationに記載のある環境変数を設定してnpm run start
またはyarn start
でReactアプリを起動したときにどんな挙動になるのか試してみました。
本記事では以下のコマンドでReactアプリを作成した後に.env
ファイルを追加していくつかの環境変数を試しています。
$ npx create-react-app advanced-envs --template typescript
$ cd advanced-envs
$ touch .env.local
BROWSER
npm run start
またはyarn start
でReactアプリを起動した際に自動で開くブラウザの設定を変更することができます。デフォルトではシステムのデフォルトのブラウザが使用されます。Macであれば「システム環境設定」>「一般」>「デフォルトのWebブラウザ」の設定が影響します。
例えば、システムのデフォルトはGoogle ChromeだけどFirefoxで開きたい、という場合は以下のように指定するとFirefoxが起動します。
BROWSER=firefox
以下のようにnone
を設定すると自動でブラウザで開かなくなります。
BROWSER=none
HOST
通常、ローカルで起動時はlocalhost
でアクセスすると思いますが、これを変更することができます。
今回はMacの場合の挙動を確認してみます。管理者権限で/etc/hosts
ファイルを開きの先頭に127.0.0.1 sample
を追加します。
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 sample
.env
に以下のように追記してReactアプリを起動すると、sample:3000
というアドレスで確認することができます。
HOST=sample
PORT
ローカルでReactアプリを起動するとデフォルトでは3000番ポートですが、これを任意のポート番号に変更することができます。
他のフレームワークでも割と3000番ポートは使うと思うので、この環境変数はよく使うかと思います。
PORT=5000
CI
この環境変数がtrueになっていると、npm run build
またはyarn build
によるビルド時にESlint等の警告(warning)があった場合に失敗します。
通常、警告があってもエラーがなければビルドは成功しますが、例えばプロダクションビルドなど厳密性が求められる場合は有効な設定です。
CI=true
REACT_EDITOR
ローカルでReactアプリを起動してで例外が発生した場合、以下のような画面が表示されるかと思います。
この画面でファイル名やコードエリアをクリックすると該当ファイルをエディタで開くことができます。どのエディタでファイルを開くかは、デフォルトではReactアプリが良い感じに判定してくれます。
Create React App will try to determine the editor you are using based on currently running processes, and open the relevant source file.
例えば、私は普段iTerm2/NeoVimを使ってyarn start
しているため、上記のようにファイル名等をクリックするとiTerm2/NeoVimで対象ファイルを開こうとしますが、あえてVSCodeで開きたい場合は以下のように設定します。
# codeにPATHが通っている前提
REACT_EDITOR=code
GENERATE_SOURCEMAP
これが結構重要です。Create React Appで作成したReactアプリはデフォルトでソースマップが有効になっています。
ソースマップが含まれていると、ブラウザの開発者ツールで元のソースコードを簡単に確認することができてしまいます。デバッグ時は必要ですが本番環境向けのビルドには不要です。
$ yarn build
$ yarn global add serve
$ serve -s build -l 3000
本番環境向けのビルドではfalseに設定しておくのが無難かと思います。
GENERATE_SOURCEMAP=false
まとめ
Create React Appは面倒なWebpackの設定を知らなくても簡単にさくっとReactアプリを作成できるためかなり便利ですが、ちゃんとどのような設定がデフォルトになっているか把握しておかないと困る場合もありそうです(特に最後のGENRERATE_SOURCEMAP
)。
Discussion