๐Ÿ‘จโ€๐Ÿ’ป๐Ÿค” ์ ์šฉ ๋‚ด์šฉ ๋ฐ ์ฐธ๊ณ ํ• ๋งŒํ•œ ๋‚ด์šฉ - KIMSEUNGGYU/blog GitHub Wiki

๐Ÿค” : ์ ์šฉํ•ด๋ณผ๋งŒํ•œ ๊ฒƒ
๐Ÿ‘จโ€๐Ÿ’ป : ์ ์šฉํ•œ ๊ฒƒ

๐Ÿ‘จโ€๐Ÿ’ป cypress ์—์„œ sitemap.xml ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•

  • sitemap.xml ํŒŒ์ผ์„ ๋“ฑ๋กํ–ˆ๋Š”๋ฐ.. ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ํ•ด๋‹น ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค. (ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ๋ถ€์žฌ๋กœ ์ธํ•ด ๋ชฐ๋ž์Œ)
  • ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์—๋Š” sitemap.xml ํŒŒ์ผ์„ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š”๋ฐ ํ•ด๋‹น ๋ถ€๋ถ„์„ ํ…Œ์ŠคํŠธ ํ•ด์•ผํ•˜๋Š”์ง€(์˜๋ฌธ),
    ์–ด๋–ค ๋ฐฉ๋ฒ•์œผ๋กœ ํ…Œ์ŠคํŠธ ํ• ์ง€ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ cypress ๋ฅผ ์ด์šฉํ•œ e2e ํ…Œ์ŠคํŠธ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ๋˜์–ด ํ•ด๋‹น ๋ถ€๋ถ„์„ ์ ์šฉํ–ˆ๋‹ค. (ํ˜„์žฌ๋Š” request ๋กœ ํ•ด๋‹น ํŒŒ์ผ์ด ์žˆ๋Š”์ง€ ํ™•์ธ)
  • cypress ์—์„œ sitemap.xml ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•
  • ๐Ÿ’ก ํ•ด๋‹น ๋ถ€๋ถ„ ์ ์šฉํ•œ ์ž‘์—… ์ฒจ๋ถ€ํ•˜๊ธฐ

๐Ÿ‘จโ€๐Ÿ’ป cypress ์—์„œ router ๋ชจํ‚นํ•œ ๋ฐฉ๋ฒ•

๐Ÿ‘จโ€๐Ÿ’ป vercel ๋ฐ github actions ๋ฅผ ํ™œ์šฉํ•˜์—ฌ CI/CD ์ž‘์„ฑ

  • vercel ์„ ์ด์šฉํ•ด์„œ ๋ฐฐํฌ ์ž๋™ํ™”๋ฅผ ํ–ˆ๋Š”๋ฐ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋„ ์ž‘์„ฑํ–ˆ๊ณ  ์•ˆ์ •์ ์ธ ํ™˜๊ฒฝ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด CI ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ–ˆ์Œ.
  • ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ product ๋ธŒ๋žœ์น˜๊ฐ€ push ๋˜๋ฉด ์ž๋™ ๋ฐฐํฌ๊ฐ€ ์ผ์–ด๋‚˜ ์ด๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด vercel-action ์„ ์‚ฌ์šฉํ•จ.
  • ์‹ค์ œ ์ปค๋ฐ‹ ๋‚ด์šฉ ์€ ๊ณผ์ •๋งŒ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ฑฐ ๊ฐ™๋‹ค.
  • ๊ตฌ๋™๋˜๊ณ  ์žˆ๋Š” CI/CD ์Šคํฌ๋ฆฝํŠธ ์ด๊ณ  ์—ฌ๊ธฐ์„œ --prod ์˜ต์…˜์€ ์žˆ๋Š”๋ฐ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ์˜ต์…˜๋„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. --prod ์˜ต์…˜์€ nextjs-env ํŒŒ์ผ์„ develop ๋“ฑ์œผ๋กœ ์ง€์ •ํ•ด๋„ product ๋ชจ๋“œ๋กœ ๋นŒ๋“œ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์ž๋Š” product ๋กœ ๋นŒ๋“œํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ --prod ๋ฅผ ์˜ต์…˜์„ ์คฌ๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ(develop CI/CD) ์ƒ๋žตํ•จ.
  • ์ž๋™ ๋ฐฐํฌ๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด vercel ์„ค์ • ํŒŒ์ผ ์„ ์ด์šฉํ•ด enabled: false ๋ฅผ ์คŒ์œผ๋กœ์„œ ์ž๋™๋ฐฐํฌ๋˜๋Š” ๊ฒƒ์„ ๋ง‰์•˜๋‹ค. (CI ์ˆ˜ํ–‰ ํ›„, vercel-action ๋ฅผ ์ด์šฉํ•˜์—ฌ CD ์ž‘์—… ์ˆ˜ํ–‰)

๐Ÿค” nextjs ์™€ cypress ํ…Œ์ŠคํŠธ ํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ํ˜„์žฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋“œ ์ฝ”๋”ฉํ•ด์„œ cypress ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰
  • ํ•˜์ง€๋งŒ, nextjs ์—์„œ ์ œ๊ณตํ•˜๋Š” __NEXT_DATA__ ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋“œ ์ฝ”๋”ฉํ•˜์ง€ ์•Š๊ณ  ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ œ์‹œ
  • cypress ํ™˜๊ฒฝ์—์„œ nextjs ํ…Œ์ŠคํŠธ ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ฐธ๊ณ 

๐Ÿ‘จโ€๐Ÿ’ป nextjs ์—์„œ sitemap ์ƒ์„ฑ ๋ฐฉ๋ฒ•

  • SEO ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด sitemap.xml ํŒŒ์ผ์ด ํ•„์š”ํ–ˆ๋‹ค.
    ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณธ ๊ฒฐ๊ณผ SSG ๋ฐฉ์‹ ๊ณผ SSR ๋ฐฉ์‹ ์„ ์ฐธ๊ณ ํ•˜์˜€๊ณ , ํ˜„์žฌ SSG ๋ฐฉ์‹์œผ๋กœ ์ ์šฉํ•˜์˜€๋‹ค. (cypress ํ…Œ์ŠคํŠธ ํ•  ๋•Œ notion-api ์š”์ฒญํ•  ๋•Œ token ๊ฐ’์ด ํ•„์š”ํ•œ๋ฐ.. ์ด๋ฅผ mocking ํ•˜๋Š” ํŒจํ„ด๋ณด๋‹ค ๋นŒ๋“œ์‹œ์— ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐ€๋„ ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.
  • SSR ๋ฐฉ์‹๊ณผ SSG ๋ฐฉ์‹ ๋ชจ๋‘ ์ ์šฉํ–ˆ์—ˆ๋Š”๋ฐ ํ˜„์žฌ๋Š” SSG ๋ฐฉ์‹์œผ๋กœ sitemap.xml ์„ ์ƒ์„ฑํ•œ๋‹ค.