7 min read

20์‹œ๊ฐ„ ์•ˆ์— Nextjs ๊ณต์‹๋ฌธ์„œ ์ „๋ถ€ ๋ฒˆ์—ญํ•˜๊ธฐ

์™œ ํ•ด์ปคํ†ค์„ ํ•˜๊ณ  ์žˆ๋Š”๊ฑฐ์•ผ

Table of Contents

์™œ ํ•ด์ปคํ†ค์„ ํ•˜๊ณ  ์žˆ๋Š”๊ฑฐ์•ผ โ€ฆ

์ฃผ๋ง๊ฐ„ ๋‚˜ ํ˜ผ์ž๋งŒ์˜ ํ•ด์ปคํ†ค์„ ํ•˜๋‚˜ ์ง„ํ–‰ํ–ˆ๋‹ค. ์‚ฌ์‹ค ๋‚˜๋ž‘ ์ง€ํ”ผํ‹ฐ ๋‘˜์ด ํ–ˆ๋‹ค๊ณ  ํ•˜๋Š”๊ฒŒ ๋งž์„ ๊ฒƒ ๊ฐ™๊ธฐ๋„ ํ•จ โ€ฆ

์ด๊ฒƒ์ €๊ฒƒ ํ•˜๋ฉด์„œ ๋ฌธ์„œ๋ฅผ ์ฐพ์•„๋ณด๊ณ  ์žˆ๋Š”๋ฐ, ๋„ฅ์ŠคํŠธ๋Š” ํ•œ๊ตญ์–ด ๋ฒˆ์—ญ ๋ฌธ์„œ๊ฐ€ ์—†๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค. (๋น„๊ณต์‹๋„!)

์‚ฌ์‹ค ๋ฆฌ์•กํŠธ๋‚˜ ๋ทฐ๋‚˜ ์ฟผ๋ฆฌ๋‚˜ ์•„์ŠคํŠธ๋กœ๋‚˜ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋‚˜ mdn์ด๋‚˜ ์›น์„ ์ฒ˜์Œ ์ ‘ํ• ๋•Œโ€ฆ ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญ๋œ ๊ณต์‹๋ฌธ์„œ๊ฐ€ ์ •๋ง ๋งŽ์ด ๋„์›€์ด ๋์—ˆ๊ณ , ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ๊ทธ๋žฌ์œผ๋ฆฌ๋ผ๋Š” ์ƒ๊ฐ์— ๋‚ด๊ฐ€ ๋งŒ๋“ค์–ด๋ณด์ž ํ–ˆ์Œ

์ง„์งœ ์—†๋‚˜?

ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ•˜๋ ค๋Š” ์‹œ๋„๊ฐ€ ์žˆ๊ธด ํ–ˆ์—ˆ๋‹ค.

Nextjs.kr ์ด๋ผ๋Š” ๋ ˆํฌ์—์„œ, 23๋…„ 6์›”๋ถ€ํ„ฐ ๋ฌด๋ ค 146๋ช…์˜ ์ปจํŠธ๋ฆฌ๋ทฐ์…˜์„ ๋ฐ›์€ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ง„ํ–‰๋˜์—ˆ๋˜ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š”๋ฐ, 23๋…„ 7์›”๋ถ€ํ„ฐ ์ž„์‹œ ์ค‘๋‹จ ์„ ์–ธ์ด ์žˆ์—ˆ๊ณ , ์ž‘๋…„ 10์›”์„ ๋งˆ์ง€๋ง‰์œผ๋กœ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ฉˆ์ถ˜ ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค.

์ •๋ง ๋งŽ์€ ๋ถ€๋ถ„ (๊ฑฐ์˜ 70% ์ •๋„๋กœ ๋ณด์ž„) ๋ฒˆ์—ญ์ด ์™„๋ฃŒ๋˜์—ˆ๊ณ , ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋ฅผ ๋†”๋‘๊ณ  ๋‚˜ ํ˜ผ์ž ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ธฐ์—๋Š”

  • ๋ฌธ์„œ์˜ ์–‘์ด ์ง„์งœ ์ •๋ง ํ„ฑ์—†์ด ๋งŽ์•˜๊ณ 
  • ์ด๋ฏธ ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•˜์‹  ์ปจํŠธ๋ฆฌ๋ทฐํ„ฐ๋“ค์—๊ฒŒ ์˜ˆ์˜๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ด

ํฌํฌ๋ฅผ ํ†ตํ•ด์„œ ์ง„ํ–‰ํ•ด๋ณผ ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ•ด๋ดค์ง€๋งŒ,

  • ์ด๋ฏธ ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ผ๊ณ  ์žˆ๋Š” ์‹œ์ ๋ถ€ํ„ฐ ๋ฒ„์…€ ๋ฆด๋ฆฌ์ฆˆ๊ฐ€ 700๊ฐœ(์ง„์งœ์ž„) ๊ฐ€ ๋‚˜์™”๊ณ 
  • ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋น„๊ตํ•ด์„œ diff๋ฅผ ๋งŒ๋“ค๊ณ  ๋ฌธ์„œ๋ฅผ ์ˆ˜์ •ํ•˜๋Š”๊ฒŒ ์‹œ๊ฐ„์ด ๋” ๊ฑธ๋ฆด๊ฒƒ ๊ฐ™์•„

๊ฒฐ๊ตญ ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

๊ทผ๋ฐ ๋ฒˆ์—ญ์„ ์‚ฌ๋žŒ์ด ํ•  ํ•„์š”๋Š” ์—†์ž–์•„

์• ์ดˆ์— ๋‚ด๊ฐ€ ํ•  ์ƒ๊ฐ์€ ์—†์—ˆ๋‹ค. ์ง€ํ”ผํ‹ฐ ์„ ์ƒ๋‹˜์„ ๋ฏฟ๊ณ  ์žˆ๊ธฐ๋„ ํ–ˆ๊ณ , Deepl์ด ๊ทธ๋ ‡๊ฒŒ ์ข‹๋‹ค๊ธธ๋ž˜ deepl + ์šฉ์–ด์ง‘์„ ์จ๋ณผ ์ƒ๊ฐ์œผ๋กœ ๊ฒฐ์ œ๋„ ํ–ˆ๋‹ค.

๊ทผ๋ฐ ๋ฏฟ์—ˆ๋˜ deepl์ด ๋ฐฐ์‹ ํ–ˆ์Œ

์™ผ์ชฝ ๊ฒฐ๊ณผ๊ฐ€ GPT ํ”„๋กฌํ”„ํŒ…, ์˜ค๋ฅธ์ชฝ ๊ฒฐ๊ณผ๊ฐ€ deepl์— React, Next.js๋“ฑ ์ด๊ฒƒ์ €๊ฒƒ ๊ฐœ๋ฐœ ์šฉ์–ด ์šฉ์–ด์ง‘์„ ์ถ”๊ฐ€ํ•œ ๊ฒฐ๊ณผ์ธ๋ฐ,

๋‹ค๋ฅธ๊ฑด ์ฐธ์•„๋„ ๋Œ€ํ™”ํ˜•, ๋™์ , ๋น ๋ฅธ React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์€ ์ฐธ์„ ์ˆ˜ ์—†์—ˆ๋‹ค.

์–ด์ฐจํ”ผ ๋ฏฟ์„ ๊ฑด GPT

๊ฒฐ๊ตญ ์ง€ํ”ผํ‹ฐ ์„ ์ƒ๋‹˜๊ณผ ํ˜‘์—…์„ ๊ฒฐ์ •ํ–ˆ๋‹ค.

์ง€ํ”ผํ‹ฐ๊ฐ€ ์ ์  ๊ฒŒ์„๋Ÿฌ์ง€๊ณ  ์žˆ๋‹ค๋Š” ์ด์Šˆ๊ฐ€ ๋งŽ๊ธฐ๋„ ํ–ˆ๊ณ , ๊ธฐ์กด์— ์ง€ํ”ผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์˜๋ฌธ ์•„ํ‹ฐํด์„ ๋ฒˆ์—ญํ• ๋•Œ, ๋ฌธ์„œ ํ›„๋ฐ˜๋ถ€์— ๊ฐ€๋ฉด ๋งˆ์Œ๋Œ€๋กœ ์ถ•์•ฝํ•ด์„œ ์ด์ƒํ•œ ๊ธธ๋กœ ๊ฐ€๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์„ ์ธ์ง€ํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กฌํ”„ํŒ…์— ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ๊ฒช์—ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๊ฒฐ๊ตญ ๋‚˜์˜จ ๋‹ต์€ ..

nextjs ๊ณต์‹๋ฌธ์„œ ๋ฒˆ์—ญ์„ ์š”์ฒญํ• ๊ฑฐ์•ผ. ์ฃผ์˜์‚ฌํ•ญ์ด ์žˆ๋Š”๋ฐ,

1. ๋งˆํฌ๋‹ค์šด ํŒŒ์ผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ• ๊ฑฐ๋‹ˆ๊นŒ ์˜์–ด์—์„œ ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ•˜๋˜, ๋งˆํฌ๋‹ค์šด ๋ฌธ๋ฒ•์€ ๋ฒˆ์—ญํ•˜์ง€ ์•Š๋„๋ก ์กฐ์‹ฌํ•ด์ค˜.
2. App Router ๊ฐ™์€ ๊ฐœ๋ฐœ ๋‹จ์–ด๋“ค์€ ๋ฒˆ์—ญํ•˜์ง€ ์•Š๊ณ  ์›๋ฌธ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•ด์ค˜.
3. ๊ณต์‹๋ฌธ์„œ ์ด๋‹ˆ๊นŒ ๋ฌธ์žฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜์ง€ ๋ง๊ณ  "์žˆ๋Š” ๊ทธ๋Œ€๋กœ" ๋ฒˆ์—ญํ•ด์ค˜.
4. ๋งˆํฌ๋‹ค์šด ์ œ๋ชฉ (#, ##, ###) ์€ ๋ฒˆ์—ญํ•˜์ง€ ๋ง๊ณ  ์˜์–ด ๊ทธ๋Œ€๋กœ ์จ์ค˜, ๋‹ค๋ฅธ ๋ชจ๋“  body ๊ธ€๋“ค์€ ๋ฒˆ์—ญํ•ด์ฃผ๋ฉด ๋ผ
5. ์›๋ฌธ ์˜์–ด์™€ ๋ฒˆ์—ญ์„ ๊ฐ™์ด ์ œ๊ณตํ•  ํ•„์š”์—†์–ด. ์›๋ฌธ์€ ์ œ๊ณตํ•˜์ง€ ๋งˆ

์ดํ•ดํ–ˆ๋Š”์ง€ ๋Œ€๋‹ตํ•ด์ฃผ๊ณ  ๋‹ค์Œ์— ๋‚ด๊ฐ€ ๋ณด๋‚ธ ๋ฌธ์„œ๋ถ€ํ„ฐ ์ƒˆ๋กœ ๋ฒˆ์—ญํ•  ์ค€๋น„ ํ•ด์ค˜

ํ•˜๋‚˜ํ•˜๋‚˜ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋„ฃ๊ฒŒ ๋œ ๊ณ„๊ธฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด๋ณด๋ฉด

  1. ์ง€ํ”ผํ‹ฐ๋„ ๊ฒฐ๊ตญ ์•„์›ƒํ’‹์„ ๋งˆํฌ๋‹ค์šด ๋ฌธ๋ฒ•์œผ๋กœ ๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ์ด์ƒํ•œ ๋…ธ๋ ฅ์„ ํ•ด์„œ ๋งˆ์Œ๋Œ€๋กœ ๋ฌธ์„œ์˜ ํ˜•์‹์„ ๋ฐ”๊พธ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ๋‹ค.
  2. ์ด๊ฑด ์‚ฌ์‹ค ko.react.dev์˜ ์šฉ์–ด์ง‘์„ ์ „๋ถ€ ๋„ฃ์–ด์„œ GPTs๋กœ ๋งŒ๋“ค์–ด๋ฒ„๋ฆฌ๊ณ  ์‹ถ์—ˆ์ง€๋งŒ, ๋ฌธ์„œ ์ž์ฒด๊ฐ€ ๊ธธ๋‹ค๋ณด๋‹ˆ๊นŒ ํ† ํฐ์„ ์•„๋ผ๋Š๋ผ ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ๋ชปํ–ˆ๊ณ 
  3. ๋ฒˆ์—ญ ํ”„๋กœ์ ํŠธ์˜ ์„ฑ๊ฒฉ์ƒ ๋ฌธ์„œ์˜ ์ •ํ™•์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ–ˆ๋‹ค.
  4. ์‚ฌ์‹ค ๊ฐœ์„ ํ•  ๋ถ€๋ถ„์ด๊ธด ํ•œ๋ฐ, ๋ฌธ์„œ ๋‚ด๋ถ€์— ๋งํฌ๊ฐ€ ๊ฑธ๋ ค์žˆ๋Š” ๋ถ€๋ถ„์ด url hash๊นŒ์ง€ ํฌํ•จํ•œ ๋ถ€๋ถ„์ด ๋งŽ์•„์„œ ์ผ๋‹จ ์˜์–ด ์›๋ฌธ ๊ทธ๋Œ€๋กœ heading์„ ์œ ์ง€ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค.
  5. llm์ด ๋ฌธ์„œ๋ฅผ ์ฝ๋Š” ํŠน์„ฑ ๋•Œ๋ฌธ์— ๊ทธ๋Ÿฐ๊ฑด์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ผ๋‹จ ์˜์–ด๋ฅผ ๋‹ค ๋ฑ‰๊ณ  ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญ์„ ๋ง๋Œ€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์–ด์„œ.. ์‰ฝ๊ณ  ๋น ๋ฅธ ์ง„ํ–‰์„ ์œ„ํ•ด ์ œ๋ฐœ ์“ฐ์ง€ ๋ง์•„๋‹ฌ๋ผ๊ณ  ๋ถ€ํƒํ•œ ๋Š๋‚Œ

๋…ธ๊ฐ€๋‹ค ์‹œ์ž‘

๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ ์ž˜ ํ•ด์ค€๋‹ค.

๊ทผ๋ฐ ์ด๋ ‡๊ฒŒ ํ•  ๋•Œ๋„ ์žˆ์Œ.

๊ทธ๋ž˜์„œ ์ด๋Ÿฐ ํ˜‘๋ฐ•์„ ๊ฑฐ์ณ ์›๋งŒํ•œ ํ•ฉ์˜๋ฅผ ํ†ตํ•ด 10์‹œ๊ฐ„์ฏค ๋…ธ๊ฐ€๋‹ค๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค. ์ค‘๊ฐ„์— ํ˜„ํƒ€๋„ ์™”๋Š”๋ฐ .. ์ด ์ฐธ์— ๊ฒธ์‚ฌ๊ฒธ์‚ฌ ๋ฌธ์„œ๋„ ์ฝ๊ณ  ์ข‹์ง€ ๋ญ .. ๋ผ๊ณ  ์—ด์‹ฌํžˆ ์ƒ๊ฐํ–ˆ์Œ

๋ฐฐํฌํ• ์‹œ๊ฐ„

๋ฒ„์…€ ํ…œํ”Œ๋ฆฟ ํ†ตํ•˜๋ฉด ์›น์‚ฌ์ดํŠธ ํ•˜๋‚˜ ํด๋ก ํ•ด์„œ ๋ฐฐํฌํ•˜๋Š”๊ฑด โ€˜๋”ธ๊นโ€™ ์œผ๋กœ ์ด๋ฃจ์–ด ์ง€๋Š” ๊ฑธ ํ•œ๋ฒˆ ํ•ด๋ด์„œ.. ์ง€์ณ ์ฃฝ๊ฒ ๋Š”๋ฐ ์›น์‚ฌ์ดํŠธ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋งŒ๋“ค๊ณ  ์‹ถ์ง„ ์•Š์•˜๋‹ค. mvp ๋Š๋‚Œ์ด๊ธฐ๋„ ํ•˜๊ณ 

Nextra docs

nextra ๋ผ๋Š” docsํ–ฅ ssg ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ฐพ์•˜๊ณ , next 13 ์œ„์— ํ…œํ”Œ๋ฆฟ์ด ์˜ฌ๋ ค์ ธ ์žˆ๊ธธ๋ž˜ ์ง€๊ธˆ ๋ฐฐํฌํ•˜๋Š” ์ˆ˜์ค€์—์„œ๋Š” ์ „ํ˜€ ๋ฌธ์ œ๋ ๊ฒŒ ์—†๊ฒ ๋‹ค - ์‹ถ์–ด ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰ํ–ˆ๋‹ค.

๋˜ ๋…ธ๊ฐ€๋‹ค

ํ•ด๊ฒฐํ•  ์‚ฌํ•ญ์ด ๋‘๊ฐœ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ, ํ•˜๋‚˜๋Š” ๋„ค๋น„๊ฒŒ์ด์…˜ ์ˆœ์„œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” _meta.json ์ด์—ˆ๊ณ , ํ•˜๋‚˜๋Š” pages router ๊ธฐ๋ฐ˜์ด๋‹ค ๋ณด๋‹ˆ ๊ธฐ์กด docs์—์„œ ํด๋” ์ˆœ์„œ๋ฅผ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด 01- ๋“ฑ์˜ prefix๋ฅผ ๋„ฃ์–ด๋‘” ๊ฒƒ๋“ค์„ ์ œ๊ฑฐํ•ด ์ค˜์•ผํ–ˆ๋‹ค.

๋‚ด๊ฐ€ ์ฝ”๋”ฉํ•˜๋ƒ? AI์“ฐ์ง€

๋ฉ”ํƒ€๋Š” ์ฝ”ํŒŒ์ผ๋Ÿฟ์œผ๋กœ ํ–ˆ๊ณ 

ํŒŒ์ผ ์ œ๊ฑฐ๋Š” ์šฐ๋ฆฌ ์ง€์„ ์ƒ๋‹˜๊ป˜์„œ ํ•ด์ฃผ์…จ๋‹ค.

SEO ์„ธํŒ…๋„ ํ–ˆ๋‹ค.

๋ฉ”ํƒ€ ๊ฐ™์€ ์ž์งˆ๊ตฌ๋ ˆํ•œ ๊ฒƒ๋“ค์€ nextra์—์„œ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•ด์ค˜์„œ, robot.txt๋งŒ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ , ๊ตฌ๊ธ€ ์›น๋งˆ์Šคํ„ฐ๋ž‘ ๋„ค์ด๋ฒ„์— ๋“ฑ๋ก๋งŒ ํ•˜๋ฉด ๋๋‹ค.

๊ทผ๋ฐ ์•ž์œผ๋กœ๋Š” โ€ฆ

์ดˆ์•ˆ์„ ๋‹ค ๋ฒˆ์—ญํ•œ๋‹ค๊ณ  ํ•ด๋„, nextjs ๊นŒ๋‚˜๋ฆฌ ๋ธŒ๋žœ์น˜๋Š” ๊ฑฐ์˜ ๋งค์ผ ๋จธ์ง€๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , ๋ฐฐํฌ๋„ 1์ฃผ๋‹จ์œ„๋กœ ์ผ์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณ„์† ์—…๋ฐ์ดํŠธํ•  ๋ฐฉ์•ˆ์„ ๊ฐ•๊ตฌํ•ด์•ผ ํ–ˆ๋‹ค.

์ด๊ฒƒ๋„ ์ง์ ‘ ํ• ์ˆœ ์—†์œผ๋‹ˆ๊นŒ

๊ฐ„๋‹จํ•˜๊ฒŒ

vercel/nextjs ์˜ canary ๋ธŒ๋žœ์น˜์˜ docs ํด๋”๋ฅผ ๋ฐ›์•„์™€์„œ, luciancah/nextjs-ko์˜ docs-update ๋ธŒ๋žœ์น˜์˜ origin/canary/docs ํด๋”์™€ diff๋ฅผ ํ™•์ธํ•˜๊ณ , ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉด ํ‘ธ์‹œํ•˜๊ณ  ์ด์Šˆ ๋งŒ๋“œ๋Š” ์•ก์…˜์„ ํ•˜๋‚˜ ์งฐ๋‹ค.

name: Sync Next.js docs to Korean repo

on:
  schedule:
    - cron: '0 0 * * *' # Runs at 00:00 UTC every day
  workflow_dispatch: # Allows manual triggering

jobs:
  sync-docs:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Next.js
        uses: actions/checkout@v2
        with:
          repository: vercel/next.js
          ref: canary
          path: next-js
          sparse-checkout: |
            docs
      - name: Checkout Korean repo
        uses: actions/checkout@v2
        with:
          repository: luciancah/nextjs-ko
          token: ${{ secrets.ACTION_PAT }}
          path: nextjs-ko
          ref: main

      - name: Configure Git
        run: |
          git config --global user.name github-actions
          git config --global user.email github-actions@github.com
      - name: Sync and check differences
        id: sync
        run: |
          # Ensure target directory exists
          mkdir -p nextjs-ko/origin/canary/docs
          # Use rsync to sync files and track changes
          changes=$(rsync -avrc --delete --out-format="%n" next-js/docs/ nextjs-ko/origin/canary/docs/ | grep -v "/$" || true)
          # If there are changes, commit and push to docs-update branch
          if [ ! -z "$changes" ]; then
            cd nextjs-ko
            git checkout -B docs-update
            git add origin/canary/docs
            git commit -m "Sync docs from Next.js
          Changes:
          $changes"
            git push -f origin docs-update
            echo "has_changes=true" >> $GITHUB_OUTPUT
            echo 'changes<<EOF' >> $GITHUB_OUTPUT
            echo "$changes" >> $GITHUB_OUTPUT
            echo 'EOF' >> $GITHUB_OUTPUT
          else
            echo "No changes detected"
            echo "has_changes=false" >> $GITHUB_OUTPUT
          fi
      - name: Create issue for new changes
        if: steps.sync.outputs.has_changes == 'true'
        uses: actions/github-script@v6
        with:
          github-token: ${{secrets.ACTION_PAT}}
          script: |
            const changes = `${{ steps.sync.outputs.changes }}`.split('\n').filter(Boolean);
            await github.rest.issues.create({
              owner: 'luciancah',
              repo: 'nextjs-ko',
              title: 'vercel/next.js canary ๋ฌธ์„œ์— ์—…๋ฐ์ดํŠธ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.',
              body: `The following files have been updated in the Next.js docs:
            ${changes.map(file => `- ${file}`).join('\n')}
            Please review these changes and update the Korean translation accordingly.
            The changes have been pushed to the \`docs-update\` branch.`
            });

๋Œ€์ถฉ ์ด๋Ÿผโ€ฆ

์›๋ž˜๋Š” ๋งค์ผ ๋Œ๋ฆด๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ, ๋งค์ผ ๋Œ๋ฆฌ๋‹ˆ๊นŒ ๋งค์ผ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒƒ ๊ฐ™์•„์„œ 2์ฃผ๋‚˜ 1๋‹ฌ ๋‹จ์œ„๋กœ ์—…๋ฐ์ดํŠธ ๋ฐ ์ž‘์—… ํ•˜๋ ค๊ตฌ ํ•œ๋‹ค.

๊ทผ๋ฐ ์•„๋ฌด๋ฆฌ ์ƒ๊ฐํ•ด๋ด๋„ ํ˜ผ์ž์„œ๋Š” ๋ชปํ•  ๊ฒƒ ๊ฐ™์•„

๊ทธ๋ž˜์„œ ์ปจํŠธ๋ฆฌ๋ทฐํ„ฐ ์„ ์ƒ๋‹˜๋“ค ์ฐพ์Šต๋‹ˆ๋‹ค !! ใ…œใ…  ์ œ๋ฐœ ๋„์™€์ฃผ์„ธ์š”

์˜คํ”ˆ์†Œ์Šค ์ปจํŠธ๋ฆฌ๋ทฐํŒ…์€ ๋ฌผ๋ก ์ด๊ณ  ๋ฉ”์ธํ…Œ์ธ์— ๋Œ€ํ•œ ๊ฒฝํ—˜๋„ ์‚ฌ์‹ค ์ „๋ฌดํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ๋ฐ›์œผ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ํ˜ผ๋ž€ ๊ทธ ์ž์ฒด์˜€๋‹ค.

๋‹ค๋ฅธ ์˜คํ”ˆ์†Œ์Šค๋“ค์„ ์—ด์‹ฌํžˆ!! ์ฐธ๊ณ ํ•ด์„œ

  1. ๊ธฐ์—ฌ ๊ฐ€์ด๋“œ
  2. PR ํ…œํ”Œ๋ฆฟ์ด๋‚˜ ์ด์Šˆ ํ…œํ”Œ๋ฆฟ
  3. ํ—ˆ์Šคํ‚ค / ์ปค๋ฐ‹๋ฆฐํŠธ, prettier ์•ก์…˜
  4. ์šฉ์–ด์ง‘, ์–ดํˆฌ ๊ฐ€์ด๋“œ
  5. ์ปจํŠธ๋ฆฌ๋ทฐํ„ฐ ๋ฆฌ๋“œ๋ฏธ์— ์ถ”๊ฐ€ํ•˜๊ธฐ !!

๋“ฑ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ํ˜‘์—… ๊ธฐ์ดˆ ์„ธํŒ… ์ •๋„๋ฅผ .. ํ–ˆ๋‹ค.

์ตœ๊ทผ ์˜คํ”ˆ์†Œ์Šค ๊ด€๋ จ ํ™œ๋™์„ ํ™œ๋ฐœํžˆ ํ•˜์‹  ๋ถ„๊ณผ ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆŒ ๊ธฐํšŒ๊ฐ€ ์žˆ์—ˆ๊ธฐ๋„ ํ–ˆ๊ณ , ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฉ”์ธํ…Œ์ด๋‹ ํ• ๋•Œ ๋ฉ”์ธํ…Œ์ด๋„ˆ๊ฐ€ ๊ฐ•ํ•˜๊ฒŒ ๋ฆฌ๋“œ ํ•ด์•ผํ• ์ง€ / ์•„๋‹ˆ๋ฉด ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ž์ƒํ•˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆด์ง€ ๋‘ ๊ฐ€์ง€์— ๋Œ€ํ•œ ๊ณ ๋ฏผ ํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฝค๋‚˜ ๋งŽ์ด ๊ฐ€์กŒ๋‹ค.

ํ”„๋กœ์ ํŠธ๊ฐ€ ์ด์ œ ์‹œ์ž‘ ๋‹จ๊ณ„์ด๊ธฐ๋„ ํ•˜๊ณ  .. ์กฐ๊ธˆ ๋šœ๋ ทํ•œ ๋กœ๋“œ๋งต์ด ์žˆ์–ด์•ผ ์ปจํŠธ๋ฆฌ๋ทฐ์…˜์ด ๋ชจ์ผ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์—ฌ

1๋‹จ๊ณ„: ๋ฌธ์„œ 100% ๋ฒˆ์—ญ 2๋‹จ๊ณ„: ์šฉ์–ด์ง‘์— ๋งž๋Š” ์–ดํœ˜ ์ˆ˜์ • ๋ฐ heading ํ•œ๊ตญ์–ด๋กœ ๋˜์–ด ์žˆ๋Š” ๋ถ€๋ถ„ ๋ณ€๊ฒฝ

ํ›„ ํ”„๋กœ์ ํŠธ๊ฐ€ ์กฐ๊ธˆ ์•ˆ์ •๋˜๊ณ  ๋‚˜๋ฉด

3๋‹จ๊ณ„: ์•ก์…˜ ํ†ตํ•ด ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฌธ์„œ ์—…๋ฐ์ดํŠธ ๋ฐ Vercel์—์„œ ์ •์‹ ๋ฆด๋ฆฌ์ฆˆ ๋‚˜์˜ฌ ๋•Œ ์Šค๋ƒ…์ƒท ๋งŒ๋“ค์–ด ๋ฌธ์„œ ๋ฒ„์ €๋‹ 4๋‹จ๊ณ„: nextjs.org/docs ๊ณผ 100% ์ผ์น˜ํ•˜๋Š” ์›น์‚ฌ์ดํŠธ ๋งŒ๋“ค๊ธฐ

๋ฅผ ๊ฑฐ์ณ ๋ฆฌ์•กํŠธ๋‚˜ ๋ทฐ์˜ ์‚ฌ๋ก€์ฒ˜๋Ÿผ ๊ณต์‹ ํ•œ๊ธ€๋ฒˆ์—ญ์œผ๋กœ ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ์žก์•˜๋‹ค.

์ •๋ง ๋„์™€์ฃผ์„ธ์š” ใ… ใ… !!

๋‚จ์€ ์ปจํŠธ๋ฆฌ๋ทฐ์…˜ ํ•ญ๋ชฉ์ด ๋งŽ์Šต๋‹ˆ๋‹คใ…Žใ…Ž!! ์‚ฌ์‹ค ๋ฌธ์„œ ๋ฒˆ์—ญ ์™ธ์—๋„, ์–ดํˆฌ ์ˆ˜์ • ๋“ฑ ๋งŽ์€ ๋ถ€๋ถ„์—์„œ ๋„์›€์ด ํ•„์š”ํ•˜์ง€๋งŒ, ์žฌ๋ฏธ์žˆ๋Š” ๋ถ€๋ถ„์„ ์ œ๊ฐ€ ๋‹ค ํ•˜๋Š” ๊ฒƒ ๊ฐ™์•„ Pages Router ๋ถ€๋ถ„์— 35๊ฐœ ๊ฐ€๋Ÿ‰ ๋ฒˆ์—ญํ•  ๋ฌธ์„œ๋ฅผ ๋‚จ๊ฒจ๋†จ์Šต๋‹ˆ๋‹ค.

๋ฌธ์„œ ํ•˜๋‚˜ํ•˜๋‚˜์˜ ๊ธธ์ด๊ฐ€ ์งง๊ณ , ์ง€ํ”ผํ‹ฐ๋ฅผ ์ด์šฉํ•ด์„œ ์ดˆ์•ˆ ์ƒ์„ฑ ํ›„ ์กฐ๊ธˆ์˜ ์ˆ˜์ •์„ ๊ฑฐ์น˜๋ฉด 10๋ถ„ ์•ˆ์—๋„ ๊ธฐ์—ฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. (์˜ค๋Š˜์ด ์ €์ ๋งค์ˆ˜์˜ ๊ธฐํšŒ์ž…๋‹ˆ๋‹ค.)

๊ธฐ์—ฌ ๊ฐ€์ด๋“œ

์ตœ์šฐ์„  ๊ณผ์ œ(์žฌ๋ฐŒ๊ณ  ๋นจ๋ฆฌ ๋๋‚จ)

๋ฐฐํฌ๋œ ์›น์‚ฌ์ดํŠธ

์˜ค๋Š˜ ํƒ‘์Šนํ•˜์‹œ๋ฉด ๋น ๋ฅด๊ณ  ์žฌ๋ฐŒ๊ฒŒ ์ €์ ๋งค์ˆ˜ ๊ธฐ์—ฌํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ™์ด ์žฌ๋ฐŒ๋Š” ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค์–ด ๋ดค์œผ๋ฉด ์ข‹๊ฒ ์–ด์š” !!