Next.js プロジェクトのセットアップ
プロジェクトを作成する
npx create-next-app <プロジェクト名>
GitHub と連携する
(GitHub Desktop.app で楽をする)
- GitHub Desktop で
File > Add Local Repository...(⌘+O)
- 作成したプロジェクトフォルダを選択して開く
Publish repository
- https://github.com/tenkao/nextjs-project-boilerplate
Vercel にデプロイする
(アカウントはチュートリアルで作成済み)
- New Project – Vercel
- GitHub に push したリポジトリを
import
- https://nextjs-project-boilerplate.vercel.app/
- 不要なファイルを削除する
https://github.com/tenkao/nextjs-project-boilerplate/commit/cfc5ea5a3f25c2242921d66c1fb4e8b1f9caf6df -
src
ディレクトリを追加し、pages
ディレクトリをその中に移動する
TypeScrip のパッケージを追加する
yarn add --dev typescript @types/react @types/node
TypeScript の型チェックをする npm scripts を追加する
"scripts": {
...
"typecheck": "tsc --noEmit"
}
使い方
$ yarn typecheck
- ページコンポーネントファイルの拡張子を js → tsx に変更する
-
src/pages/_app.tsx
,同 index.tsx
-
-
yarn dev
を実行して ts 関連のファイルを生成する -
tsconfig.json
の設定を追加・変更する -
_app.tsx
に型を追加?- このへんよくわからないけどそのうち
ESLint の設定を追加
.eslintrc
next.config.js
Prettier の追加
yarn add --dev --exact prettier
"scripts": {
...
"format": "prettier --write \"./src/**/*.{ts,tsx}\""
}
{
"singleQuote": true,
"semi": false
}
GitHub Actions .github/workflows/main.yml
はひとまず保留しとこうかな
Chakra UI の追加
yarn add @chakra-ui/react @emotion/react @emotion/styled framer-motion @chakra-ui/icons
- Chakra UI - A simple, modular and accessible component library that gives you the building blocks you need to build your React applications. - Chakra UI
-
Emotion - Introduction
-
Emotion is a library designed for writing css styles with JavaScript. It provides powerful and predictable style composition in addition to a great developer experience with features such as source maps, labels, and testing utilities. Both string and object styles are supported.
-
- Production-Ready Animation Library for React | Framer Motion
- Icon - Chakra UI
Provider
とは?
Chakra UI の動作確認
「React Testing LibraryのcustomRenderを定義」? 🤔
-
Setup | Testing Library
-
React Testing Library does not require any configuration to be used. However, there are some things you can do when configuring your testing framework to reduce some boilerplate. In these docs we'll demonstrate configuring Jest, but you should be able to do similar things with any testing framework (React Testing Library does not require that you use Jest).
-
はじめてのユニットテスト
↑ 画像でか
あとクリップボードから画像のペーストはできないのね
はじめてのスナップショットテスト
スナップショットのテストはUI が予期せず変更されていないかを確かめるのに非常に有用なツールです。
典型的なスナップショット テスト ケースでは、UI コンポーネントをレンダリングしてスナップショットを取得し、テストと一緒に保存されている参照スナップショット ファイルと比較します。
2つのスナップショットが一致しない場合テストは失敗します: 予期されない変更があったか、参照するスナップショットが新しいバージョンのUIコンポーネントに更新される必要があるかのどちらかです。
Jestにおけるスナップショットテスト
Reactコンポーネントをテストする場合には同様のアプローチをとる事ができます。 アプリケーション全体の構築が必要となるグラフィカルなUIをレンダリングする代わりに、シリアライズ可能なReactツリーの値を素早く生成するテスト用レンダラーを利用できます。
スナップショットテストとビジュアルの回帰テストの違いは何ですか?
スナップショットテストとビジュアルの回帰テストはUIをテストする2つの独立した方法であり、目的が異なります。 ビジュアルの回帰テストツールはwebページのスクリーンショットを取得して出力された画像をピクセル単位で比較します。 スナップショットテストにおいてはシリアライズされた値をテキストファイルに格納して、異なるアルゴリズムで比較します。
Jest も GitHub Actions の設定はとりあえず保留で
Renovate の導入
-
GitHub へのインストール
-
設定ファイルの追加
.github/renovate.json
push したら自動でプルリクできてクローズされてた
- 週末なので Renovate の PR が何件もきてた
- その分、Vercel のデプロイも実行されてしまう
- このへん参考になるかも
↑↑ を参考に Renovate の設定を変更した
したところ ↓ の Issue が立った
Repository problems
These problems occurred while renovating this repository.WARN: Base branch does not exist - skipping
This repository currently has no open or pending branches.
"baseBranches": ["chore/renovate"]
が無いってことかな?
ということでブランチを作っておいた
問題なければ週末に動くかな?
↑ ブランチにマージされるようになってた
が、Vercel のプレビューデプロイは変わらず実行されてた
main
ブランチの場合だけ実行してほしい
できるっぽい
けど地味に手間かかるのね
↑ main
ブランチの場合だけ実行するように設定してみた
次の更新があった時に確認する
なんかエラーになってた
↑ View deployment
から Build Logs を見てみると No such file or directory
だってよ
〜
00:08:03.733 Running "bash vercel-ignore-build-step.sh"
00:08:03.739 bash: vercel-ignore-build-step.sh: No such file or directory
00:08:03.744 Error: Command failed with exit code 127: bash vercel-ignore-build-step.sh
〜
chore/renovate
ブランチに vercel-ignore-build-step.sh
のコミットをマージしてなかったのだわ
そのせいかなー 🤔
マージしたら bot が動いて無事成功 🎉
〜
16:43:58.593 Running "bash vercel-ignore-build-step.sh"
16:43:58.600 VERCEL_GIT_COMMIT_REF: renovate/nextjs-monorepo
16:43:58.601 🛑 - Build cancelled
16:43:58.602 The Deployment has been canceled as a result of running the command defined in the "Ignored Build Step" setting.
16:43:59.418 Deployment has been canceled
地味にめんどくさかったけどこれで次からは大丈夫かな…?
はじめての Cypress テスト
テストの様子が自動で動画に出力されるの便利だなー(↓ gif に変換したもの)
Cypress Testing Library を追加する
-
testing-library/cypress-testing-library: 🐅 Simple and complete custom Cypress commands and utilities that encourage good testing practices.
This allows you to use all the useful DOM Testing Library methods in your tests.
-
testing-library/dom-testing-library: 🐙 Simple and complete DOM testing utilities that encourage good testing practices.
Simple and complete DOM testing utilities that encourage good testing practices.
- Testing Library | Testing Library
Cypress も Github Actions の設定は保留で
- パッケージをインストール
- 設定ファイルを編集
.storybook/main.ts
.storybook/preview.tsx
- Story を追加
yarn storybook
実際に使うとなったら Storybook 自体を要調査だなー
- パッケージをインストール
- npm scripts に追加
- 設定ファイル、テンプレートを追加
_templates/component/new/prompt.js
_templates/component/new/component.tsx.ejs.t
_templates/component/new/stories.tsx.ejs.t
yarn hygen component new
便利そう
CSS Moduluesを使用していたり、TDDをしていたりする場合はひとつのコンポーネントを作成する際に必要なファイルがさらに増えると思うので、ぜひ導入してみてください。
なるほど
ひとまずセットアップは完了かな
vercel とか止めとこ
特に必要ないと思うので Vercel 上のプロジェクトを削除した
デバッガの設定を追加
参考)
静的なページから始めよう|出来る100%TypeScript 作って学ぶNext.js + GraphQL + Prisma(上) - GCP編