Skip to main content

GitHub Codespaces์— ๋Œ€ํ•œ ํ…œํ”Œ๋ฆฟ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์„ค์ •

GitHub Codespaces์— ์‚ฌ์šฉํ•  ํ…œํ”Œ๋ฆฟ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์„ค์ •ํ•˜์—ฌ ์‚ฌ๋žŒ๋“ค์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†Œ๊ฐœ

ํ…œํ”Œ๋ฆฟ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์„ค์ •ํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ GitHub Codespaces์—์„œ ์‚ฌ๋žŒ๋“ค์ด ํ”„๋ ˆ์ž„์›Œํฌ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” ๊ธฐํƒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋„๋ก ๋„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋ณต์ œํ•˜๊ฑฐ๋‚˜ ๋„๊ตฌ ๋˜๋Š” ๊ธฐํƒ€ ์ข…์†์„ฑ ์„ค์น˜๋ฅผ ๊ฑฑ์ •ํ•  ํ•„์š” ์—†์ด ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์ฆ‰์‹œ ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ ์ž‘์—…์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ํŽธ์ง‘์„ ์œ„ํ•ด ์ด๋ฏธ ์—ด๋ ค ์žˆ๋Š” ์ค‘์š”ํ•œ ํŒŒ์ผ์ด ์žˆ๋Š” codespace์—์„œ ์‚ฌ์šฉ์ž๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด VS Code ์›น ํŽธ์ง‘๊ธฐ ๋‚ด์˜ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๋ธŒ๋ผ์šฐ์ € ํƒญ์—์„œ ์ด๋ฏธ ์‹คํ–‰๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…œํ”Œ๋ฆฟ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์ฝ๊ธฐ ๊ถŒํ•œ์ด ์žˆ๋Š” ์‚ฌ์šฉ์ž๋Š” GitHub์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ํŽ˜์ด์ง€์—์„œ codespace๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ํ…œํ”Œ๋ฆฟ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ codespace๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ…œํ”Œ๋ฆฟ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋งŒ๋“ค๊ธฐ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

์‚ฌ์šฉ์ž๊ฐ€ ํ…œํ”Œ๋ฆฟ์„ ์ฐพ๊ณ  ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ…œํ”Œ๋ฆฟ์˜ codespace ๋งŒ๋“ค๊ธฐ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ์ž์Šต์„œ์—์„œ ์ด ๋งํฌ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "๋”ฅ ๋งํฌ ๊ณต์œ " ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๊ณ  ๋น ๋ฅธ ์‹œ์ž‘์„ ์„ ํƒํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ƒˆ codespace๋ฅผ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ตœ๊ทผ codespace๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€๋กœ ์—ฐ๊ฒฐ๋˜๋Š” ๋งํฌ๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ codespaces์˜ ๋น ๋ฅธ ์ƒ์„ฑ ๋ฐ ์žฌ๊ฐœ ์ง€์›์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

ํ…œํ”Œ๋ฆฟ์—์„œ codespace๋ฅผ ๋งŒ๋“ค๋ฉด ํ…œํ”Œ๋ฆฟ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๋‚ด์šฉ์ด ํ•ด๋‹น codespace๋กœ ๋ณต์ œ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ค€๋น„๊ฐ€ ๋˜๋ฉด ๊ฐœ์ธ ๊ณ„์ •์ด ์†ํ•œ GitHub์˜ ์ƒˆ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ž‘์—…์„ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ…œํ”Œ๋ฆฟ์—์„œ codespace ๋งŒ๋“ค๊ธฐ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

์กฐ์ง์€ ์กฐ์ง์˜ ๊ตฌ์„ฑ์›๊ณผ ์™ธ๋ถ€ ํ˜‘๋ ฅ์ž ๋น„์šฉ์„ ์ง€๋ถˆํ•˜๊ณ  ์กฐ์ง์˜ ๋น„์šฉ์œผ๋กœ GitHub Codespaces์„(๋ฅผ) ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์กฐ์ง์ด ์†Œ์œ ํ•œ ํ…œํ”Œ๋ฆฟ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋งŒ๋“  codespace๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ํ…œํ”Œ๋ฆฟ์—์„œ ๋งŒ๋“  codespace๋ฅผ ๊ฐœ์ธ ๊ณ„์ • ๊ฒŒ์‹œํ•˜๋Š” ๊ฒฝ์šฐ codespace์˜ ์†Œ์œ ๊ถŒ ๋ฐ ์ฒญ๊ตฌ๋Š” codespace๋ฅผ ๋งŒ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub Codespaces ์ฒญ๊ตฌ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

ํ…œํ”Œ๋ฆฟ ์„ค๋ช…

ํ…œํ”Œ๋ฆฟ์ด ์—†๋Š” ๊ฒฝ์šฐ ํ…œํ”Œ๋ฆฟ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ๋งŒ๋“ค์–ด ํ…œํ”Œ๋ฆฟ์˜ ๋ชฉ์ ๊ณผ ํ…œํ”Œ๋ฆฟ์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ถ”๊ฐ€ ์ •๋ณด์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ณ  ํŽ˜์ด์ง€ ์˜ค๋ฅธ์ชฝ์˜ ์ •๋ณด ์„น์…˜ ์˜†์— ์žˆ๋Š” ์„(๋ฅผ) ํด๋ฆญํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช…์„ ์ œ๊ณตํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌํฌ์ง€ํ† ๋ฆฌ ํŽ˜์ด์ง€์˜ "์ •๋ณด" ์„น์…˜ ์Šคํฌ๋ฆฐ์ƒท ์„ค์ • ๋‹จ์ถ”(๊ธฐ์–ด ๊ธฐํ˜ธ)๋Š” ์ง„ํ•œ ์ฃผํ™ฉ์ƒ‰ ์œค๊ณฝ์„ ์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘ ํŒŒ์ผ ์ถ”๊ฐ€

ํ…œํ”Œ๋ฆฟ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํ”„๋ ˆ์ž„์›Œํฌ ๋˜๋Š” ๊ธฐํƒ€ ๊ธฐ์ˆ ์„ ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ƒ์šฉ๊ตฌ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋œ ์‹œ์ž‘ ํŒŒ์ผ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํฌํ•จํ•  ํŒŒ์ผ์˜ ์ข…๋ฅ˜์— ๋Œ€ํ•œ ์ง€์นจ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด GitHub Codespaces์— ๋Œ€ํ•œ ๊ณต์‹ GitHub ํ…œํ”Œ๋ฆฟ์— ํฌํ•จ๋œ ์‹œ์ž‘ ํŒŒ์ผ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. GitHub์˜ ์™ผ์ชฝ ์œ„ ๋ชจ์„œ๋ฆฌ์—์„œ ์„(๋ฅผ) ์„ ํƒํ•˜๊ณ  Codespaces๋ฅผ ํด๋ฆญํ•œ ๋‹ค์Œ github.com/codespaces "๋‚ด codespace" ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

  2. ํ…œํ”Œ๋ฆฟ์˜ ์ „์ฒด ๋ชฉ๋ก์„ ๋ณด๋ ค๋ฉด "๋น ๋ฅธ ์‹œ์ž‘ ํ…œํ”Œ๋ฆฟ ํƒ์ƒ‰" ์„น์…˜์—์„œ ๋ชจ๋‘ ๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    "๋น ๋ฅธ ์‹œ์ž‘ ํ…œํ”Œ๋ฆฟ ํƒ์ƒ‰" ์„น์…˜์˜ ์Šคํฌ๋ฆฐ์ƒท์ž…๋‹ˆ๋‹ค. "๋ชจ๋‘ ๋ณด๊ธฐ"๋Š” ์ง„ํ•œ ์ฃผํ™ฉ์ƒ‰ ์œค๊ณฝ์„ ์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  3. ํ…œํ”Œ๋ฆฟ์— ๋Œ€ํ•œ ํŒŒ์ผ์ด ํฌํ•จ๋œ ํ…œํ”Œ๋ฆฟ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋ณด๋ ค๋ฉด ํ…œํ”Œ๋ฆฟ์˜ ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    Codespace ํŽ˜์ด์ง€์˜ "๋น ๋ฅธ ์‹œ์ž‘ ํ…œํ”Œ๋ฆฟ ํƒ์ƒ‰" ์„น์…˜์— ๋Œ€ํ•œ ์Šคํฌ๋ฆฐ์ƒท ํ…œํ”Œ๋ฆฟ์˜ ์ด๋ฆ„์€ ์ฃผํ™ฉ์ƒ‰ ์œค๊ณฝ์„ ์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ์ปจํ…Œ์ด๋„ˆ ๊ตฌ์„ฑ

ํ…œํ”Œ๋ฆฟ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๊ฐœ๋ฐœ ์ปจํ…Œ์ด๋„ˆ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜์—ฌ GitHub Codespaces์„(๋ฅผ) ์‚ฌ์šฉํ•˜์—ฌ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉ์ž ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Visual Studio Code์˜ ๋ฏธ๋ฆฌ ์ •์˜๋œ ๊ตฌ์„ฑ ์„ค์ • ๋ชฉ๋ก์—์„œ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž devcontainer.json ๊ณ ์œ ์˜ ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ง€์ • ๊ตฌ์„ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ฐœ๋ฐœ ์ปจํ…Œ์ด๋„ˆ ์†Œ๊ฐœ ๋ฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๊ฐœ๋ฐœ ์ปจํ…Œ์ด๋„ˆ ๊ตฌ์„ฑ ์ถ”๊ฐ€์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

์ฐธ๊ณ  ํ•ญ๋ชฉ

์‚ฌ์šฉ์ž๊ฐ€ ํ…œํ”Œ๋ฆฟ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์ด ํ…œํ”Œ๋ฆฟ ์‚ฌ์šฉ ๋‹จ์ถ”์—์„œ codespace๋ฅผ ๋งŒ๋“ค ๋•Œ ๊ตฌ์„ฑ ์ค‘์—์„œ ์„ ํƒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. codespace๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๋ฃจํŠธ์—์„œ .devcontainer/devcontainer.json ๋˜๋Š” .devcontainer.json์— ์ •์˜๋œ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž์—๊ฒŒ ํ…œํ”Œ๋ฆฟ์— ๋Œ€ํ•œ ์ตœ์ƒ์˜ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋„๋ก ๋„๊ตฌ ๋ฐ ์‚ฌ์šฉ์ž ์ง€์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด devcontainer.json ํŒŒ์ผ์—์„œ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • openFiles ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…œํ”Œ๋ฆฟ์—์„œ codespace๋ฅผ ๋งŒ๋“ค ๋•Œ VS Code ์›น ํด๋ผ์ด์–ธํŠธ์—์„œ ์ž๋™์œผ๋กœ ์—ด๋ฆด ํŒŒ์ผ ๋ชฉ๋ก์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž๊ฐ€ ํ…œํ”Œ๋ฆฟ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด API ํ‚ค์™€ ๊ฐ™์€ ๊ฐœ์ธ ๋น„๋ฐ€์„ ์ œ๊ณตํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ๋น„๋ฐ€์„ ์ œ๊ณตํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๊ถŒ์žฅ๋˜๋Š” ๋น„๋ฐ€ ์ง€์ •์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.
  • ํ…œํ”Œ๋ฆฟ์— ์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์šฉ ํŒŒ์ผ์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์˜ codespace์—์„œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด postAttachCommand ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ VS Code ์›น ํด๋ผ์ด์–ธํŠธ๊ฐ€ codespace์— ์—ฐ๊ฒฐํ•˜๋Š” ์ฆ‰์‹œ ๋กœ์ปฌ ์„œ๋ฒ„์—์„œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‹œ์ž‘ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ํฌํŠธ์˜ onAutoForward ์†์„ฑ์„ openPreview์— ์„ค์ •ํ•˜์—ฌ ํ•ด๋‹น ํฌํŠธ์—์„œ ์‹คํ–‰ ์ค‘์ธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ VS Code ์›น ํด๋ผ์ด์–ธํŠธ์— ํฌํ•จ๋œ ๊ฐ„๋‹จํ•œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ‘œ์‹œํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

React ํ…œํ”Œ๋ฆฟ์— ๋Œ€ํ•œ ๋‹ค์Œ ๊ตฌ์„ฑ ์„ค์ •์€ ์‚ฌ์šฉ์ž์˜ ํŽธ์ง‘๊ธฐ์—์„œ app.js ํŒŒ์ผ์„ ์—ด๊ณ  , npm start์„(๋ฅผ) ์‹คํ–‰(package.json ํŒŒ์ผ์— ์ •์˜๋จ)ํ•˜์—ฌ ๋กœ์ปฌ ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜๊ณ , codespace์˜ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๋ธŒ๋ผ์šฐ์ € ํƒญ์œผ๋กœ ํฌํŠธ 3000์„(๋ฅผ) ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

{
    "postAttachCommand": {
      "server": "npm start"
    },

    "portsAttributes": {
      "3000": {
        "label": "Application",
        "onAutoForward": "openPreview"
      }
    },

    "customizations": {
      "codespaces": {
        "openFiles": ["src/App.js"]
      }
    }
}

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ฐœ๋ฐœ ์ปจํ…Œ์ด๋„ˆ ์›น ์‚ฌ์ดํŠธ์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ codespace์—์„œ ์ž๋™์œผ๋กœ ํŒŒ์ผ ์—ด๊ธฐ ๋ฐ ๊ฐœ๋ฐœ ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์–‘์„ ์ฐธ์กฐํ•˜์„ธ์š”.