๐ŸŽ‰ berenickt ๋ธ”๋กœ๊ทธ์— ์˜จ ๊ฑธ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๐ŸŽ‰
DevOps
NextJs ํŠธ๋ ˆ์ผ๋ง ์Šฌ๋ž˜์‰ฌ

Next.js SSG๋นŒ๋“œ & SSR ๋นŒ๋“œ

SSG, SSR ๊ฐ๊ฐ ๋นŒ๋“œ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ๋ช…๋ น์–ด๋ฅผ ๋‚˜๋ˆ„์–ด์ฃผ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค

1
"scripts": {
2
"dev": "next dev",
3
"build": "next build",
4
"build:ssg": "next build && next export",
5
"start": "next start"
6
},

์ดํ›„ ํ„ฐ๋ฏธ๋„์—์„œ build ์„ ์ž…๋ ฅํ•˜๋ฉด SSR ๋นŒ๋“œ๋ฅผ, build:ssg ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด SSG ๋นŒ๋“œ๊ฐ€ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

SSG ๋นŒ๋“œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, out ํด๋”๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ, ํ•ด๋‹น ํด๋” ์•ˆ์—์„œ SSG ๋ฐฐํฌ์— ์‚ฌ์šฉ๋˜๋Š” ํด๋”์™€ ํŒŒ์ผ๋“ค(e.g. 404.html, boards.html)์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


4.1 Trailing Slash

ํŠธ๋ ˆ์ผ๋ง ์Šฌ๋ž˜์‹œ๋Š” URL ์ฃผ์†Œ ๋์— ๋ถ™์€ ์Šฌ๋ž˜์‹œ / ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

  • e.g.) https://www.google.co.kr/ ๋ฅผ ๋ณด์‹œ๋ฉด ๋์— ์Šฌ๋ž˜์‹œ๊ฐ€ ๋ถ™์–ด์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์‹ค https://www.google.co.kr ์ด๋ ‡๊ฒŒ ์ ์–ด๋„ ์ž˜ ๋™์ž‘ํ•˜์ง€๋งŒ,
  • ๋ธŒ๋ผ์šฐ์ €๋Š” ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ๋ฅผ ๋‹ค๋ฅธ ์ฃผ์†Œ๋กœ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฃผ์†Œ ๋์— ์Šฌ๋ž˜์‹œ๊ฐ€ ๋ถ™์–ด์žˆ์œผ๋ฉด ์ด๊ฑด ๋””๋ ‰ํ† ๋ฆฌ, ์ฆ‰ ํด๋”๋ผ๋Š” ์˜๋ฏธ์ด๊ณ ,
    • ์Šฌ๋ž˜์‹œ๊ฐ€ ์—†๋‹ค๋ฉด ์—ฌ๊ธฐ๊ฐ€ ๋, ์ฆ‰ ํŒŒ์ผ์ด๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Next.js์˜ ๊ธฐ๋ณธ ssg build ์˜ต์…˜์€

  • /boards/index.js ํŽ˜์ด์ง€๋ฅผ /boards.html ์ด๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ html ํŒŒ์ผ๋กœ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.
  • ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ํ˜•ํƒœ์˜ ํด๋”๊ตฌ์กฐ๋Š” ๋ณด๊ธฐ ๋ถˆํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ์—,
  • /boards/index.html๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ build ํ•˜๋„๋ก ์„ค์ •์„ ๋ณ€๊ฒฝํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

next.config.js ํŒŒ์ผ์„ ์—ด์–ด trailing slash ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค.

1
/** @type {import('next').NextConfig} */
2
const nextConfig = {
3
reactStrictMode: true,
4
trailingSlash: true,
5
}
6
7
module.exports = nextConfig

๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ๋‹ค์‹œ yarn build:ssg ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด build๋œ ๊ฒƒ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.