2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Gatsbyをインストールしてサイトを作るまで

Posted at

対象読者

  • 手っ取り早く Gatsby を始めたいmacユーザーの方(windows ユーザーは動作未確認)

初期設定

Gatsbyの公式をなぞるだけ

プロジェクト作成

公式が出している gatsby の cli をインストール

npm install -g gatsby-cli

インストールした gatsby-cli でプロジェクトを作る

gatsby new gatsby-site https://github.com/gatsbyjs/gatsby-starter-hello-world

動作確認

上記コマンドで作成されたプロジェクトのルートディレクトリに移動

cd gatsby-site

開発モードで起動

gatsby develop

他のサーバが起動していなければ http://localhost:8000/ でサーバが起動するので、ブラウザでアクセスして Hello world! が表示されていればここまで成功

変更が反映されることを確認するために、以下のファイルを変更

gatsby-site/src/pages/index.js

import React from "react"

export default function Home() {
-  return <div>Hello world!</div>
+  return <div>Hello Gatsby</div>
}

ブラウザ上で更新されていれば問題なし。
もしここまでで問題があっても、おそらくgatsby本体の問題というよりは開発環境側の問題だと思われる(もちろん100%そうだとは言い切れないが)

開発する

ページを追加

gatsby-site/src/pages ディレクトリに *.js ファイルを追加すると (develop モードなどで gatsby を動かしていれば)自動的にページが生成される。

例えば about.js を追加し、 http://localhost:8000/about を確認すると新しくページができていることが確認できる。

コンポーネントの使用

gatsby-site/src 配下にコンポーネントを配置すれば、通常の react と同様にコンポーネントを参照できるようになる。

例えば gatsby-site/src/components ディレクトリを作成してそこに header.js footer.js を設置し、それを index.js から読み込む場合、index.js は以下の様になる

import React from "react"
import Header from "../components/header"
import Footer from "../components/footer"

export default function Home() {
  return (
    <div>
      <Header />
      <p>これはインデックスページです</p>
      <Footer />
    </div>
  )
}

CSS の適用

CSS ファイルを読み込みたい場合

公式チュートリアルをなぞる

gatsby-site/src 配下に styles ディレクトリを追加する。そこに css ファイルを設置する


gatsby-site/src/styles/global.css

* {
  padding: 0;
  margin: 0;
}

CSS ファイルを記述したら、必要なファイルから import 文で読み込んであげる。
ここでは公式に習い、全ページで特定の CSS を読み込ませる例を記載

gatsby-site/gatsby-browser.js を作成し、cssを読み込ませる

gatsby-site/gatsby-browser.js

import "./src/styles/global.css"

この状態でビルドすると、CSS が適用されていることが確認できる

Styled Components の適用

こちらも 公式 をなぞる
素のままでは使えないので、ターミナルで必要なものをインストール

npm install --save gatsby-plugin-styled-components styled-components babel-plugin-styled-components

gatsby-config.jsに以下を記載

module.exports = {
-  plugins: [],
+  plugins: [`gatsby-plugin-styled-components`],
}

これだけでもう styled-components が使えるようになる


gatsby-site/src/pages/index.js

import React from "react"
import styled from "styled-components"
import Header from "../components/header"
import Footer from "../components/footer"

const Container = styled.div`
  margin: 3rem auto;
  max-width: 600px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
`

export default function Home() {
  return (
    <Container>
      <Header />
      <p>これはインデックスページです</p>
      <Footer />
    </Container>
  )
}

画像の表示

癖がある
必要なモジュールが間違っている可能性があるので指摘していただけると嬉しいです。

適宜必要なモジュールのインストール

npm install --save gatsby-source-filesystem gatsby-plugin-sharp gatsby-transformer-sharp gatsby-image

gatsby-config.js

const path = require(`path`)

module.exports = {
  plugins: [
    {
      resolve: `gatsby-source-filesystem`,
      options: {
        name: `images`,
        path: path.join(__dirname, `src`, `images`),
      },
    },
    `gatsby-plugin-sharp`,
    `gatsby-transformer-sharp`,
  ]
}

次にgatsby-site/src/imagesディレクトリを作り、その配下に画像ファイルを配置する

参照側は以下の通りにする

import React from "react"
import { graphql } from "gatsby"
import Img from "gatsby-image"

export default ({ data }) => (
  <div>
    <Img fixed={data.file.childImageSharp.fixed} />
  </div>
)

export const query = graphql`
  query {
    file(relativePath: { eq: "ここにimages以下の画像パス" }) {
      childImageSharp {
        fixed(width: 125, height: 125) {
          ...GatsbyImageSharpFixed
        }
      }
    }
  }
`

これだと二つ以上の画像が表示できないので、Aliasing を使ってクエリを書き換えてあげると二枚以上の画像を引っ張ってこれる。(参考)

import React from "react"
import { graphql } from "gatsby"
import Img from "gatsby-image"

export default ({ data }) => (
  <div>
    <Img fixed={data.img1.childImageSharp.fixed} />
    <Img fixed={data.img2.childImageSharp.fixed} />
  </div>
)

export const query = graphql`
  query {
    img1:file(relativePath: { eq: "1枚目の画像パス" }) {
      childImageSharp {
        fixed(width: 125, height: 125) {
          ...GatsbyImageSharpFixed
        }
      }
    },
    img2:file(relativePath: { eq: "2枚目の画像パス" }) {
      childImageSharp {
        fixed(width: 125, height: 125) {
          ...GatsbyImageSharpFixed
        }
      }
    },
  }
`

(おまけ)FireBase へのホスティング

こちらのサイトが非常にわかりやすく説明してくれています

以上、gatsby のごく簡単な使い方でした
もし誤字脱字、その他間違っているところなどございましたら指摘していただけると大変ありがたいです。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?