nextjs-blog-example-ja icon indicating copy to clipboard operation
nextjs-blog-example-ja copied to clipboard

(Japanese) 📩 React ăƒ™ăƒŒă‚čăźăƒ•ăƒŹăƒŒăƒ ăƒŻăƒŒă‚Ż Next.js ă§ă‚·ăƒłăƒ—ăƒ«ăȘăƒ–ăƒ­ă‚°ă‚’äœœă‚‹æ—„æœŹèȘžăźă‚”ăƒłăƒ—ăƒ«ă§ă™ă€‚

2023/04/10 ç©æ„”çš„ă«ăƒĄăƒłăƒ†ăƒŠăƒłă‚čできăȘくăȘăŁăŸăŸă‚ă‚ąăƒŒă‚«ă‚€ăƒ–ă—ăŸă—ăŸă€‚ Next.js ăŻćŒ•ăç¶šăäșșæ°—ă§ă™ăŒă€ă€Œ Next.js ă§ăƒ–ăƒ­ă‚°ă‚’äœœă‚‹ă€ăšă„ă†äœżă„æ–čをするäșșはもう民ăȘくăȘったぼではăȘă„ă‹ăšă„ă†æ°—ăŒă—ăŸă™ă€‚

テă‚čăƒˆăšăƒ“ăƒ«ăƒ‰

nextjs-blog-example-ja

React ăƒ™ăƒŒă‚čăźăƒ•ăƒŹăƒŒăƒ ăƒŻăƒŒă‚Ż Next.js ă§ă‚·ăƒłăƒ—ăƒ«ăȘăƒ–ăƒ­ă‚°ă‚’äœœă‚‹ă‚”ăƒłăƒ—ăƒ«ă§ă™ă€‚

æŹĄăźăƒšăƒŒă‚žă«ă“ăźăƒȘポゾトăƒȘăźă‚łăƒŒăƒ‰ă‚’äœżăŁăŸăƒăƒ„ăƒŒăƒˆăƒȘă‚ąăƒ«ăŒă‚ă‚ŠăŸă™:

ć‹•äœœç’°ćąƒ

  • Node v18

ăƒ–ăƒ©ăƒłăƒæ§‹æˆ

  • main: ăăźăšăă©ăăźæœ€æ–°ç‰ˆ

äœżç”šăƒ©ă‚€ăƒ–ăƒ©ăƒȘ

仄䞋た NPM ăƒ‘ăƒƒă‚±ăƒŒă‚žă‚’äœżç”šă—ăŠă„ăŸă™ă€‚

  • next
  • react
  • react-dom
  • react-markdown
  • react-syntax-highlighter
  • rehype-raw
  • remark-gfm
  • gray-matter

Next.js ă‚’ćˆ©ç”šă™ă‚‹ăŸă‚ă«ćż…èŠăȘ next react react-dom た 3 ぀ず、 frontmatter ä»˜ăăź Markdown た HTML ăžăźć€‰æ›ă«æœ‰ç”šăȘ react-markdown rehype-raw remark-gfm gray-matter ă‚’äœżăŁăŠă„ăŸă™ă€‚ èżœćŠ ă§ă€ă‚·ăƒłă‚żăƒƒă‚Żă‚čăƒă‚€ăƒ©ă‚€ăƒˆă« Prism.js ă‚’ćˆ©ç”šă™ă‚‹ăŸă‚ăź react-syntax-highlighter ă‚’äœżăŁăŠă„ăŸă™ă€‚

è‡Ș拕テă‚čăƒˆă«ăŻä»„äž‹ăźăƒ‘ăƒƒă‚±ăƒŒă‚žă‚’äœżç”šă—ăŠă„ăŸă™ă€‚

  • @babel/core
  • @babel/preset-env
  • @babel/preset-react
  • babel-jest
  • identity-obj-proxy
  • jest
  • react-test-renderer

äœżă„æ–č

GitHub Codespaces でべりあえず拕かしどみる

Codespaces でこぼăƒȘポゾトăƒȘă‚’é–‹ăăŸă™ă€‚

Codespaces た Visual Studio Code が開いたら「 Terminal 」ぼべころから NPM ăƒ‘ăƒƒă‚±ăƒŒă‚žă‚’ă‚€ăƒłă‚čăƒˆăƒŒăƒ«ă—ăŸă™ïŒˆ Codespaces がè‡Șć‹•çš„ă«ă‚€ăƒłă‚čăƒˆăƒŒăƒ«ă™ă‚‹ă“ăšă‚‚ă‚ă‚ŠăŸă™ïŒ‰ă€‚

npm install

開ç™șç”šăƒ—ăƒŹăƒ“ăƒ„ăƒŒă‚’è”·ć‹•ă—ăŸă™ă€‚

npm run dev

ăƒăƒŒăƒˆ 3000 ăŒé–‹ă„ăŠăƒăƒŒăƒˆăƒ•ă‚©ăƒŻăƒŒăƒ‡ă‚Łăƒłă‚°ăŒèĄŒă‚ă‚Œă‚‹ăźă§ăăź URL ă‚’é–‹ăăŸă™ă€‚

è©Šă—ç”‚ă‚ăŁăŸă‚‰ Codespaces たă‚čăƒšăƒŒă‚čă‚’ç ŽæŁ„ă—ăŸă™ă€‚

開ç™ș環汃で拕かす

# ăƒȘポゾトăƒȘをチェックケォト
git checkout https://github.com/gh640/nextjs-blog-example-ja.git

# ăƒ—ăƒ­ă‚žă‚§ă‚Żăƒˆăƒ«ăƒŒăƒˆă«ç§»ć‹•
cd nextjs-blog-example-ja/

# npm ăźäŸć­˜ăƒ‘ăƒƒă‚±ăƒŒă‚žă‚’ă‚€ăƒłă‚čăƒˆăƒŒăƒ«
npm install

# 開ç™șă‚”ăƒŒăƒăƒŒă‚’è”°ă‚‰ă›ă‚‹
# 開ç™șă‚”ăƒŒăƒăƒŒă‚’æ­ąă‚ăŸă„ć ŽćˆăŻ ctrl + c 等で
npm run dev

ć…Źé–‹ç”šă«é™çš„ă‚”ă‚€ăƒˆă‚’ç”Ÿæˆă™ă‚‹

# ăƒ“ăƒ«ăƒ‰
npm run build

# é™çš„ă‚”ă‚€ăƒˆă‚’ç”Ÿæˆă—ăŠă€€`out/` ディレクトăƒȘにć‡ș抛する
npm run export

Google Analytics ăźăƒˆăƒ©ăƒƒă‚­ăƒłă‚°ă‚łăƒŒăƒ‰ă‚’ć…„ă‚Œă‚‹

ç’°ćąƒć€‰æ•° GA_TRACKING_ID ă§ăƒˆăƒ©ăƒƒă‚­ăƒłă‚° ID ă‚’ă‚»ăƒƒăƒˆă™ă‚Œă°ă€ Google Analytics ăźăƒˆăƒ©ăƒƒă‚­ăƒłă‚°ă‚łăƒŒăƒ‰ă‚’ăƒšăƒŒă‚žă«ćŸ‹ă‚èŸŒă‚€ă“ăšăŒă§ăăŸă™ă€‚

ç’°ćąƒć€‰æ•°ăŻă‚żăƒŒăƒŸăƒŠăƒ«ă§ă‚»ăƒƒăƒˆă™ă‚‹æ–čæł•ăš .env.local ăƒ•ă‚Ąă‚€ăƒ«ă‚’äœżç”šă™ă‚‹æ–čæł•ăŒç”šæ„ă•ă‚ŒăŠă„ă‚‹ăźă§ă€ă©ăĄă‚‰ă§ă‚‚ă‚„ă‚Šă‚„ă™ă„æ–čを遾んでください。

ă‚żăƒŒăƒŸăƒŠăƒ«:

export GA_TRACKING_ID=UA-XXX-XX

.env.local ăƒ•ă‚Ąă‚€ăƒ«:

GA_TRACKING_ID=UA-XXX-XX

ć…·äœ“çš„ă«ă©ăźă‚ˆă†ăȘćœąă§ăƒˆăƒ©ăƒƒă‚­ăƒłă‚°ă‚łăƒŒăƒ‰ăŒćŸ‹ă‚èŸŒăŸă‚ŒăŠă„ă‚‹ă‹çŸ„ă‚ŠăŸă„ć ŽćˆăŻă€ăƒ—ăƒ­ă‚žă‚§ă‚Żăƒˆć†…ăź GA_TRACKING_ID ăźäœżç”šçź‡æ‰€ă‚’æŽąă—ăŠăżăŠăă ă•ă„ă€‚

rg GA_TRACKING_ID

ć‚è€ƒ:

è‡Ș拕テă‚čăƒˆă‚’è”°ă‚‰ă›ă‚‹

npm test
# ăŸăŸăŻ
npm run test