Netlifyへ新規Gatsbyサイトをデプロイする

最近Gatsbyをさわることがあって他にもいろいろ試したいので、"新規サイトをローカルで生成してNetlifyへのデプロイ"までを忘れないようにメモしました。

###NetlifyとGatsby
####Netlify

[Netlify](https://www.netlify.com)は静的サイトのホスティングサービスです。

- 無料で使い始めることができる
- 結びついているgitリポジトリにpushすると自動で最新バージョンのサイトをビルドできる

という特徴があり、プロトタイピングに便利です。

####Gatsby.js
静的サイトジェネレータの1つ。[こちら](https://qiita.com/umamichi/items/9bd08a21fddc71588efc)がとても詳しいです。



### 環境など
- macOS Catalina
- Node.js v12.18.3
- GitHubでリポジトリを作成してローカルからpushできる状態にある

###ローカル開発用にセットアップ

[バージョン2.27.0で搭載されたインストール方法](https://github.com/gatsbyjs/gatsby/blob/master/docs/docs/reference/release-notes/v2.27/index.md#create-gatsby)を使ってみます。

```shell
npm init gatsby
```

いくつかの質問が続くので答えていきます。

```shell

#名前を聞かれる デフォルト名"My Gatsby Site"でよければそのままEnter
What would you like to call your site?
✔ · My Gatsby Site
#以下の3つの質問はそのままEnterで進む
What would you like to name the folder where your site will be created?
✔ node/ my-gatsby-site
✔ Will you be using a CMS?
· No (or I'll add it later)
✔ Would you like to install a styling system?
· No (or I'll add it later)


#この質問は複数選択 なにも選択しないので↓キーでDoneまで進めてEnter
? Would you like to install additional features with other plugins?
(Multiple choice) Use arrow keys to move, enter to select, and choose "Done" to confirm your choices
 ◯ Add the Google Analytics tracking script
 ◯ Add responsive images
 ◯ Add page meta tags with React Helmet
 ◯ Add an automatic sitemap
 ◯ Enable offline functionality
 ◯ Generate a manifest file
 ◯ Add Markdown support (without MDX)
 ◯ Add Markdown and MDX support
  ─────
❯ Done


Thanks! Here's what we'll now do:

    🛠  Create a new Gatsby site in the folder my-gatsby-site
  
? Shall we do this? (Y/n) › Yes
#最後にこのプロンプトで止まるのでそのままEnter

```
うまくいくと以下のメッセージがでます。

```shell
🎉  Your new Gatsby site My Gatsby Site has been successfully created
```

###サイト確認(ローカル)

npmも使えますが今回はyarnを使ってます。

####開発モードで確認
```shell
#上記設定で作成されたディレクトリへ入る (上記デフォルトのままだとmy-gatsby-site)
cd my-gatsby-site
#開発モードでサイトのサーバ起動
yarn develop
```

メッセージが多く出ると思いますが、通常

```shell
You can now view my-gatsby-site in the browser.
⠀
  http://localhost:8000/
```
が含まれていると思います。```http://localhost:8000/```へアクセスすると現状のサイトを確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935211/163e508d-be0f-97dc-e68f-1e6543daa235.png)

サーバの終了は```control+C```です。

####本番用サイトを生成して確認

```shell
#本番用サイトを生成
yarn build
#生成された本番サイトをローカルサーバで起動
yarn serve
```

開発内容によってはビルド段階でエラーがでることがあるので、デプロイ前に上記コマンドで一度ローカル確認したほうがいいです。
問題なければ以下の出力がでてアクセスできるようになります。

```shell
You can now view my-gatsby-site in the browser.
⠀
  http://localhost:9000/
```

これもサーバの終了は```control+C```です。



###デプロイ

####Githubにプッシュ

githubに新規リポジトリを作ったあと、ローカルからプッシュします。

####Netlify

https://www.netlify.com/

アカウントがない場合は sign up からアカウント作成できます。自分はGitHubアカウント認証で作りました。

ログイン直後のホーム画面にある New site from Git をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935211/fe451a2b-ccb3-91e9-07cf-924ff8f6207b.png)

Create a new site の画面になるのでGitHubのボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935211/7d8d0415-fdfe-9f4b-b0d7-c72e580aed39.png)


GitHubリポジトリの詳細設定に移ります。先程作成したリポジトリが所属するGitHubアカウントをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935211/6f793000-66b7-5ebe-d3dc-d171e2842004.png)


GitHubへのnetlifyプラグインのインストール設定になります。Only select repositoriesを選択 -> select repositories で先程作成したリポジトリを選択。netlifyがGitHubへ接続する際のアクセス設定について説明されているので、これで問題なければInstallをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935211/9ef3be78-a89a-b44a-e90b-60f5613f405f.png)

もう一度Create a new site の画面になるのでGitHubのボタンをクリック。
先程追加したリポジトリが追加されているはずなのでそれをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935211/66f11062-e75a-15e1-338e-6da208eedaef.png)

デプロイ設定に移るが、Netlify側で自動設定しているようで通常は下記のようになる。そのまま Deploy Site をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935211/1fb0f3e6-925a-c327-bcc2-8a0313998065.png)

Site deploy in progressはデプロイ進行中。デプロイが終わると表示がURLに変わってアクセス可能になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935211/c18125ef-d5ea-0bce-04c5-7d4883bdf4f0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935211/1bece6b5-84f6-8ed5-7070-8f2ce2ab6e13.png)



###参考文献
https://qiita.com/umamichi/items/9bd08a21fddc71588efc