静的サイトジェネレータのGatsbyとNetlifyの組み合わせでブログを作りたいと思い、まずは手元のMacにGatsbyをインストールしてみることにしました。
やりたいこと
- MacにGatsbyを入れる
- サンプルを出力させる
参考リソース
0. Set Up Your Development Environment
Install Node.js
とりあえずnodebrewで最新版を入れた。ところ後に失敗。
nodeのバージョンを、チュートリアルと同じv8.11.3にそろえてもう一度やったところうまくいったので、「とりあえず最新入れとけばいいでしょ」というのはやめて、チュートリアルに従っておいたほうがよいでしょう。
私はnodebrewをつかっているので、以下コマンドで入れました。
$ nodebrew install-binary v8.11.3
Check your Node.js installation
$ node -v
v8.11.3
$ npm -v
6.4.1
Install Git
Skip.(済んでいるため)
Install Gatsby CLI
$ npm install --global gatsby-cli
/Users/yoshikiito/.nodebrew/node/v8.11.3/bin/gatsby -> /Users/yoshikiito/.nodebrew/node/v8.11.3/lib/node_modules/gatsby-cli/lib/index.js
+ gatsby-cli@2.4.6
added 206 packages in 11.811s
Check your Gatsby CLI installation
$ gatsby -v
2.4.6
$ gatsby --help
Usage: gatsby <command> [options]
コマンド:
gatsby develop Start development server. Watches files,
rebuilds, and hot reloads if something
changes
gatsby build Build a Gatsby project.
gatsby serve Serve previously built Gatsby site.
gatsby info Get environment information for debugging
and issue reporting
gatsby repl Get a node repl with context of Gatsby
environment, see (add docs link here)
gatsby new [rootPath] [starter] Create new Gatsby project.
オプション:
--verbose Turn on verbose output [真偽] [デフォルト: false]
--no-color Turn off the color in output [真偽] [デフォルト: false]
-h, --help ヘルプを表示 [真偽]
-v, --version バージョンを表示 [真偽]
Create a Gatsby site
チュートリアルの手順に従い、まずはhello-worldというサンプルを作成します。
$ gatsby new hello-world https://github.com/gatsbyjs/gatsby-starter-hello-world
info Creating new site from git: https://github.com/gatsbyjs/gatsby-starter-hello-world.git
Cloning into 'hello-world'...
remote: Enumerating objects: 247, done.
remote: Total 247 (delta 0), reused 0 (delta 0), pack-reused 247
Receiving objects: 100% (247/247), 547.13 KiB | 513.00 KiB/s, done.
Resolving deltas: 100% (119/119), done.
success Created starter directory layout
info Installing packages...
> fsevents@1.2.4 install /Users/yoshikiito/blog/hello-world/node_modules/fsevents
> node install
[fsevents] Success: "/Users/yoshikiito/blog/hello-world/node_modules/fsevents/lib/binding/Release/node-v57-darwin-x64/fse.node" already installed
Pass --update-binary to reinstall or --build-from-source to recompile
npm WARN gatsby-starter-hello-world@ No repository field.
added 1578 packages in 27.762s
$ cd hello-world/
$ gatsby develop
success open and validate gatsby-configs — 0.006 s
success load plugins — 0.130 s
success onPreInit — 0.075 s
success delete html and css files from previous builds — 0.005 s
success initialize cache — 0.007 s
success copy gatsby files — 0.064 s
success onPreBootstrap — 0.013 s
success source and transform nodes — 0.019 s
success building schema — 0.178 s
success createPages — 0.001 s
success createPagesStatefully — 0.044 s
success onPreExtractQueries — 0.001 s
success update schema — 0.078 s
success extract queries from components — 0.026 s
success run graphql queries — 0.015 s — 2/2 170.55 queries/second
success write out page data — 0.008 s
success write out redirect data — 0.001 s
success onPostBootstrap — 0.001 s
info bootstrap finished - 4.208 s
ERROR Failed to compile with 2 errors 16:59:39
These dependencies were not found:
- gatsby-link in ./.cache/gatsby-browser-entry.js
- gatsby-react-router-scroll in ./.cache/root.js
To install them, you can run: npm install --save gatsby-link gatsby-react-router-scroll
✖ 「wdm」:
ERROR in ./.cache/gatsby-browser-entry.js
Module not found: Error: Can't resolve 'gatsby-link' in '/Users/yoshikiito/blog/hello-world/.cache'
@ ./.cache/gatsby-browser-entry.js 9:0-84 35:0-38:48 35:0-38:48 35:0-38:48 35:0-38:48 35:0-38:48 35:0-38:48
@ ./.cache/dev-404-page.js
@ ./.cache/sync-requires.js
@ ./.cache/app.js
@ multi (webpack)-hot-middleware/client.js?path=/__webpack_hmr&reload=true&overlay=false ./.cache/app
ERROR in ./.cache/root.js
Module not found: Error: Can't resolve 'gatsby-react-router-scroll' in '/Users/yoshikiito/blog/hello-world/.cache'
@ ./.cache/root.js 13:0-59 68:31-44
@ ./.cache/app.js
@ multi (webpack)-hot-middleware/client.js?path=/__webpack_hmr&reload=true&overlay=false ./.cache/app
ℹ 「wdm」: Failed to compile.
エラーになってしまいました。言われた通りに、無いものを入れてみます。
$ npm install --save gatsby-link gatsby-react-router-scroll
npm WARN gatsby-starter-hello-world@ No repository field.
+ gatsby-react-router-scroll@2.0.2
+ gatsby-link@2.0.7
added 2 packages in 9.774s
追加できたっぽいので、再度develp
を試みる。
$ gatsby develop
success open and validate gatsby-configs — 0.008 s
success load plugins — 0.159 s
success onPreInit — 0.115 s
success delete html and css files from previous builds — 0.011 s
info One or more of your plugins have changed since the last time you ran Gatsby. As
a precaution, we're deleting your site's cache to ensure there's not any stale
data
success initialize cache — 0.021 s
success copy gatsby files — 0.064 s
success onPreBootstrap — 0.007 s
success source and transform nodes — 0.015 s
success building schema — 0.109 s
success createPages — 0.001 s
success createPagesStatefully — 0.036 s
success onPreExtractQueries — 0.003 s
success update schema — 0.079 s
success extract queries from components — 0.024 s
success run graphql queries — 0.011 s — 2/2 244.76 queries/second
success write out page data — 0.006 s
success write out redirect data — 0.001 s
success onPostBootstrap — 0.001 s
info bootstrap finished - 2.761 s
DONE Compiled successfully in 1682ms 17:02:29
You can now view gatsby-starter-hello-world in the browser.
http://localhost:8000/
View GraphiQL, an in-browser IDE, to explore your site's data and schema
http://localhost:8000/___graphql
Note that the development build is not optimized.
To create a production build, use gatsby build
ℹ 「wdm」:
ℹ 「wdm」: Compiled successfully.
WAIT Compiling... 17:02:29
ℹ 「wdm」: Compiling...
DONE Compiled successfully in 22ms 17:02:29
ℹ 「wdm」:
ℹ 「wdm」: Compiled successfully.
今度はうまくいきました。
View your site locally
にアクセスしてHello Worldの表示が確認できた。(上記画像は、少し中身をいじったもの)
ここまでで、Gatsbyを入れてサンプルサイトを立ち上げるまで、ができました。
まとめ
このあと、サイトのコンテンツを軽くつくってみるなどしたのですが、CMSなしで自分でGatsbyでブログ更新しつづけるの、しんどそうだなというのが正直な感想でした。
Gatsbyはフロントまわりがわかってる人には良いのかもですが、私はそれほど詳しくないのでHugoのほうが易しそうです。(でも、やってみたからこれがわかったわけで。進歩進歩。)