Vscode: ๊ธฐ๋Šฅ ์š”์ฒญ: ์—ด๋ ค ์žˆ๋Š” ํŒŒ์ผ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ํŒŒ์ผ์— ๋Œ€ํ•ด ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ์˜ค๋ฅ˜ ๋ฐ ๊ฒฝ๊ณ  ํ‘œ์‹œ

์— ๋งŒ๋“  2016๋…„ 10์›” 18์ผ  ยท  108์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: microsoft/vscode

์ˆ˜๋ฐฑ ๊ฐœ์˜ ํŒŒ์ผ๊ณผ ์—ฌ๋Ÿฌ ๊ณ„์ธต์˜ ์ค‘์ฒฉ๋œ ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์žˆ๋Š” ์ง์žฅ์—์„œ VS Code๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์„œ๋“œ์˜ ํ˜ธ์ถœ ์„œ๋ช…์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋“ฑ ๋งŽ์€ ํŒŒ์ผ์„ ์†์ƒ์‹œํ‚ค๋Š” ๋ณ€๊ฒฝ ์ž‘์—…์„ ์ž์ฃผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋Š” ์™„์ „ํžˆ typescript์ด๊ธฐ ๋•Œ๋ฌธ์— "๋ฌธ์ œ" ๋ณด๊ธฐ๋ฅผ ์—ด๊ณ  ๋‚ด๊ฐ€ ์—ฐ ํŒŒ์ผ์—์„œ ๋‚ด ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ ์˜ค๋ฅ˜ ๋ฐ ๊ฒฝ๊ณ ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœ์ ํŠธ์˜ ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ ํ„ฐ๋ฏธ๋„๋กœ ์ด๋™ํ•˜์—ฌ ๋ฌธ์ œ ๋ชฉ๋ก์„ ๋ณด๋ ค๋ฉด ์ž์ฒด make ๋ช…๋ น์„ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์ „์— ์˜ฌ๋ฐ”๋ฅธ ํŒŒ์ผ์—์„œ ์˜ฌ๋ฐ”๋ฅธ ์ค„์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ํ„ฐ๋ฏธ๋„๊ณผ VS Code ์‚ฌ์ด์—์„œ ์žฌ๋ฏธ์žˆ๋Š” ์ถค์„ ์ถ”์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์€ "๋ฌธ์ œ" ๋ณด๊ธฐ์— ๋‚ด ํ”„๋กœ์ ํŠธ์˜ ์—ด๋ ค ์žˆ๊ณ  ๋‹ซํžŒ ๋ชจ๋“  ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ชจ๋“  ์˜ค๋ฅ˜์™€ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜๋„๋ก ์ง€์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋‹จ์ผ ๋ชฉ๋ก์—์„œ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ๋น ๋ฅด๊ฒŒ ํด๋ฆญํ•˜์—ฌ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

feature-request typescript

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์—ฃ์ง€์—์„œ ์‚ด๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ๋‹ค์Œ VS Code ๋‚ด๋ถ€์ž ๋นŒ๋“œ๋Š” ์‹คํ—˜์ ์ธ ํ”„๋กœ์ ํŠธ ์ „์ฒด์˜ ์˜ค๋ฅ˜ ๋ณด๊ณ ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” "typescript.tsserver.experimental.enableProjectDiagnostics" ์„ค์ •์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค.

Feb-06-2020 16-15-20

์ด๊ฒƒ์€ ์ƒ์‚ฐ ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค! ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ์•Œ๋ ค์ ธ ์žˆ์œผ๋ฉฐ ์ธํ…”๋ฆฌ์„ผ์Šค๊ฐ€ ์†์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ด์–ด์ฃผ์„ธ์š”.

๋ชจ๋“  108 ๋Œ“๊ธ€

@waderyan ์ด๊ฒƒ์€ TS ํŒ€๊ณผ ๋…ผ์˜ํ•œ ๋นŒ๋” ์ž‘์—…์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ ์š”์ฒญ์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ ์—ฌ๊ธฐ์— ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋งํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค - https://github.com/Microsoft/TypeScript/issues/11229

๊ธ€์Ž„, ๋‚˜๋Š” ๋‹จ์ง€ "problemMatcher": "$tsc-watch" (https://code.visualstudio.com/Docs/editor/tasks#_processing-task-output-with-problem-matcher ์ฐธ์กฐ)์™€ ๋ชจ๋“  ์˜ค๋ฅ˜ ๋ฐ ๊ฒฝ๊ณ ๊ฐ€ ๋ฌธ์ œ ๋ณด๊ธฐ์— ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์—ด๋ฆฐ ํŒŒ์ผ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์–ธ์–ด ์„œ๋ฒ„๋กœ ์ธํ•ด ์ฆ‰์‹œ ๊ฐ์ง€๋˜๊ธฐ โ€‹โ€‹๋•Œ๋ฌธ์— ๊ฝค ์ข‹์€ ์›Œํฌํ”Œ๋กœ์ด์ง€๋งŒ ์ €์žฅํ•˜๋ฉด ์ฆ๋ถ„ ์ปดํŒŒ์ผ( tsc --watch )์ด ํŠธ๋ฆฌ๊ฑฐ๋˜๋ฏ€๋กœ ์—ฌ์ „ํžˆ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ์ง€๋งŒ ์ €์žฅ/์ €์žฅํ•˜์ง€ ์•Š์Œ์œผ๋กœ์จ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ง.

์ด๊ฒƒ์— ์–ด๋–ค ETA? ํ•ด๋‹น ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ์—ด๋ ธ๊ณ  ๋‚ด๊ฐ€ ๋†“์นœ ๊ฒƒ์ด ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์Šค๋งˆ์ผ:

@maxime1992 ํ›„์†

๋‚ด๊ฐ€ ๊นจ๋‹ซ์ง€ ๋ชปํ•œ ๊ฒƒ์€ VSCode์— ์žˆ๋Š” ์ž‘์—… ์ธํ”„๋ผ๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ task.json์— ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

{
  "version": "0.1.0",
  "command": "tsc",
  "isShellCommand": true,
  "args": ["-w", "-p", "."],
  "showOutput": "silent",
  "isBackground": true,
  "problemMatcher": "$tsc-watch"
}

๊ทธ๋Ÿฐ ๋‹ค์Œ ์‹คํ–‰ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฌธ์ œ ๋ณด๊ธฐ์—์„œ ์ „์ฒด ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ์˜ค๋ฅ˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์™œ ์ด๊ฒƒ์ด ๋” ๋ˆˆ์— ๋„๊ฒŒ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š”์ง€ ์•ฝ๊ฐ„ ๋‹นํ™ฉ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๋งค์šฐ ์œ ์šฉํ•˜๊ณ  ๋ฉ‹์ง‘๋‹ˆ๋‹ค.

@johnfn ํ›Œ๋ฅญํ•œ ์†”๋ฃจ์…˜, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—…์˜ ์œ ์ผํ•œ ๋ชฉ์ ์ด ์˜ค๋ฅ˜๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด "--noEmit" ์ธ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

{
  "version": "0.1.0",
  "command": "tsc",
  "isShellCommand": true,
  "args": ["-w", "-p", ".", "--noEmit"],
  "showOutput": "silent",
  "isBackground": true,
  "problemMatcher": "$tsc-watch"
}

@kevinjreece iTerm์˜ Semantic History ๊ธฐ๋Šฅ(https://www.iterm2.com/documentation-one-page.html)์„ ์‚ฌ์šฉํ•˜์—ฌ "๋‚ด ๋‹จ๋ง๊ณผ VS Code ๊ฐ„์˜ ํŽ€๋Œ„์Šค"๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. cmd๊ฐ€ ํŒŒ์ผ ์ด๋ฆ„ + ์ค„ ๋ฒˆํ˜ธ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์ž๋™์œผ๋กœ vscode์—์„œ ํ•ด๋‹น ์ค„์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค!

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

Ctrl+Shift+M (๋˜๋Š” Cmd+Shift+M )๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ ํŒจ๋„์„ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ๊ฐ€๊ธฐ ํ‚ค ์•„๋ž˜์— "๋ฌธ์ œ ํ‘œ์‹œ"๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๋ฌด์Šจ ๋œป์ธ๊ฐ€์š”?

์•„๋‹ˆ์š”, ์—ด๋ ค ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ๋‹ค์Œ ํŒŒ์ผ๋กœ ์ด๋™ํ•˜๋Š” ๋ฐ”๋กœ ๊ฐ€๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ํ•  ํ™•์žฅ์„ ์ฐพ๊ณ  ์žˆ์—ˆ์ง€๋งŒ API๋Š” ๋‹จ๋‹จํžˆ ์ž ๊ฒจ ์žˆ๊ณ  ๋ช…๋ น์€ ๋‚ด๊ฐ€ ๋ณผ ์ˆ˜์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ MarkerService (๋ฌธ์ œ ์ถ”์ )์— ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์•Œ ๊ฒ ์–ด์š”. ๊ฝค ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ vscode์˜ Problems ์˜์—ญ์€ ๊ฐœ์„ ํ•  ๊ธฐํšŒ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์‚ฌ๋žŒ์€ https://github.com/Microsoft/vscode/issues/34412์ž…๋‹ˆ๊นŒ?
ํ›„์† ๋นŒ๋“œ ๊ฐ„์— ์ •ํ™•ํžˆ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด๋ฅผ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.

๋””๋ฒ„๊ทธ ์ž‘์—…์— tsc ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŠธ๋ฆญ์ด ํ•ญ์ƒ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉ์ž ์ •์˜ Webpack ๋กœ๋”๊ฐ€ ์žˆ๋Š” Vue ํ”„๋กœ์ ํŠธ์—์„œ .vue ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค( tsc ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Vue ํŒŒ์ผ์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ).

๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ณด๊ณ  VS Code ํ„ฐ๋ฏธ๋„๋กœ ์ปดํŒŒ์ผํ•˜๋ฉด ๋ชจ๋“  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ npm ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
"live-check": "webpack --config ./build/webpack.dev.conf.js -w --display none",

๊ทธ๋ฆฌ๊ณ  "npm run live-check"๋ฅผ ํ†ตํ•ด VS ํ„ฐ๋ฏธ๋„๋กœ ์‹คํ–‰ํ•˜๊ณ  ๋ชจ๋“  ์˜ค๋ฅ˜๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

@johnfn ์˜ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉ
์ถœ๋ ฅ ํƒญ์—์„œ ์‹คํ–‰ ์ค‘์ธ ์ž‘์—…์„ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

task.json:

{
    "version": "0.1.0",
    "command": "tsc",
    "isShellCommand": true,
    "args": ["-w", "-p", ".", "--noEmit"],
    "showOutput": "silent",
    "isBackground": true,
    "problemMatcher": "$tsc-watch"
  }

tsconfig.json

{
  "compilerOptions": {
    /* Basic Options */
    "target": "es2015",                       /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', or 'ESNEXT'. */
    "module": "es2015",                       /* Specify module code generation: 'commonjs', 'amd', 'system', 'umd' or 'es2015'. */
    // "lib": [],                             /* Specify library files to be included in the compilation:  */
    "allowJs": true,                          /* Allow javascript files to be compiled. */
    // "checkJs": true,                       /* Report errors in .js files. */
    "jsx": "react-native",                    /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
    // "declaration": true,                   /* Generates corresponding '.d.ts' file. */
    "sourceMap": true,                        /* Generates corresponding '.map' file. */
    // "outFile": "./",                       /* Concatenate and emit output to single file. */
    "outDir": "./build",                      /* Redirect output structure to the directory. */
    "rootDir": "./src",                       /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
    "removeComments": false,                  /* Do not emit comments to output. */
    // "noEmit": true,                        /* Do not emit outputs. */
    // "importHelpers": true,                 /* Import emit helpers from 'tslib'. */
    // "downlevelIteration": true,            /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
    // "isolatedModules": true,               /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */

    /* Strict Type-Checking Options */
    "strict": true,                           /* Enable all strict type-checking options. */
    "noImplicitAny": true,                    /* Raise error on expressions and declarations with an implied 'any' type. */
    "strictNullChecks": true,                 /* Enable strict null checks. */
    "noImplicitThis": true,                   /* Raise error on 'this' expressions with an implied 'any' type. */
    "alwaysStrict": true,                     /* Parse in strict mode and emit "use strict" for each source file. */

    /* Additional Checks */
    // "noUnusedLocals": true,                /* Report errors on unused locals. */
    // "noUnusedParameters": true,            /* Report errors on unused parameters. */
    // "noImplicitReturns": true,             /* Report error when not all code paths in function return a value. */
    // "noFallthroughCasesInSwitch": true,    /* Report errors for fallthrough cases in switch statement. */

    /* Module Resolution Options */
    "moduleResolution": "node",               /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
    // "baseUrl": "./",                       /* Base directory to resolve non-absolute module names. */
    // "paths": {},                           /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
    // "rootDirs": [],                        /* List of root folders whose combined content represents the structure of the project at runtime. */
    // "typeRoots": [],                       /* List of folders to include type definitions from. */
    // "types": [],                           /* Type declaration files to be included in compilation. */
    "allowSyntheticDefaultImports": true      /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */

    /* Source Map Options */
    // "sourceRoot": "./",                    /* Specify the location where debugger should locate TypeScript files instead of source locations. */
    // "mapRoot": "./",                       /* Specify the location where debugger should locate map files instead of generated locations. */
    // "inlineSourceMap": true,               /* Emit a single file with source maps instead of having a separate file. */
    // "inlineSources": true,                 /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */

    /* Experimental Options */
    // "experimentalDecorators": true,        /* Enables experimental support for ES7 decorators. */
    // "emitDecoratorMetadata": true,         /* Enables experimental support for emitting type metadata for decorators. */
  },
  "include": [
    "src/**/*",
    "./node_modules/react-native-dev-kit/**/*"
  ],
  "exclude": [
    "__tests__",
    "index.android.js",
    "index.ios.js",
    "build",
    "local_history",
    "node_modules"
  ]
}

๋‹ซํžŒ ํŒŒ์ผ์—์„œ ์˜ค๋ฅ˜๋ฅผ ๋ณผ ์ˆ˜ ์—†๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ(์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค)?

๐Ÿ‘

@apperside๊ฐ€ ๋งํ–ˆ๋“ฏ์ด .. ์ž‘์—…์€ ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ์—๋งŒ ์˜ค๋ฅ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค..

์‚ฌ์ด๋“œ๋ฐ”์˜ ์ž‘์—… ๊ณต๊ฐ„์— ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ์ด ์ž‘์—…์— ๋Œ€ํ•ด ํฌ๊ฒŒ ๊ฐ์‚ฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ตœ์‹  ๋ฒ„์ „์˜ vscode์—์„œ ์ž‘์—… ํ˜•์‹์ด ์•ฝ๊ฐ„ ๋ณ€๊ฒฝ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ƒˆ ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

        {
            "label": "Monitor TS Errors",
            "command": "./node_modules/.bin/tsc",
            "type": "shell",
            "args": ["--watch", "--project", "."],
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared"
            },
            "isBackground": true,
            "problemMatcher": "$tsc-watch"
        }

VSCode๋ฅผ ์—ด ๋•Œ๋งˆ๋‹ค ์ž‘์—…์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์ž๋™์œผ๋กœ ์‹คํ–‰์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‚˜์š”?

์ตœ์‹  ๋ฒ„์ „์˜ VS ์ฝ”๋“œ๋Š” ํŒŒ์ผ๋‹น ์˜ค๋ฅ˜ ์ˆ˜๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

capture

์ด๊ฒƒ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

// ํŒŒ์ผ ๋ฐ ํด๋”์— ๋Œ€ํ•œ ์˜ค๋ฅ˜ ๋ฐ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
"problems.decorations.enabled": ์ฐธ,

์ด๊ฒƒ์„ false๋กœ ์„ค์ •ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ;)

2018๋…„ 2์›” 15์ผ ๋ชฉ์š”์ผ ์˜ค์ „ 1์‹œ 36๋ถ„์— pabloli [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

โ€”
์ด ์Šค๋ ˆ๋“œ์— ๊ฐ€์ž…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/Microsoft/vscode/issues/13953#issuecomment-365838054 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAy0aayEHkVuxumJRuZz-mdWmBvBhdn9ks5tU9B2gaJpZM4KaH3J
.

์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค

{
  "label": "TSCompileAll",
  "type": "shell",
  "command": "./node_modules/.bin/tsc --watch --noEmit --project .",
  "problemMatcher": ["$tsc-watch"]
}

๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์ตœ์†Œํ•œ ์„ค์ •์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๊ณต๊ฐ„์ด๋‚˜ ํ”„๋กœ์ ํŠธ์—์„œ ์ด ์ž‘์—…์„ ์ž๋™์œผ๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•œ๋‹ค:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "tsc watch",
            "type": "shell",
            "command": "./node_modules/.bin/tsc",
            "isBackground": true,
            "args": ["--watch", "--noEmit", "--project", "www"],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "reveal": "never",
                "echo": false,
                "focus": false,
                "panel": "dedicated"
            },
            "problemMatcher": "$tsc-watch"
        }
    ]
}

์ด ํ™•์žฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์ž‘ ์‹œ ์ž‘์—…์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. https://marketplace.visualstudio.com/items?itemName=yukidoi.blade-runner

ํŒŒ์ผ์„ ๋‹ซ์„ ๋•Œ (๋ฌธ์ œ ํŒจ๋„์—์„œ) ํŒŒ์ผ์˜ ์˜ค๋ฅ˜๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•„์ง ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ์„ ๋‹ซ์€ ํ›„ ํŒจ๋„์— ๋‚˜์—ด๋œ ๋ฌธ์ œ๋ฅผ ์œ ์ง€ํ•˜๋Š” ์˜ต์…˜์ด ์žˆ์œผ๋ฉด ๋งค์šฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ค‘๋Œ€ํ˜• ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ํŒŒ์ผ์„ ์—ฌ๋Š” ๊ฒƒ์€ ์ƒ๋‹นํžˆ ๋ฒˆ๊ฑฐ๋กœ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜๋‚˜์˜ ๋ช…๋ น์œผ๋กœ ๋ชจ๋“  ํŒŒ์ผ์„ ํ•œ ๋ฒˆ์— ์—ฌ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ ๋‚˜์—๊ฒŒ ์ˆ˜์šฉ ๊ฐ€๋Šฅํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@daarong ๋‚˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ „์ฒด ํ”„๋กœ์ ํŠธ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด vscode๋กœ ์ฝ”๋”ฉํ•˜๋Š” ๋™์•ˆ ํ„ฐ๋ฏธ๋„์—์„œ eslint-watch๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. vscode์— ๋ชจ๋“  linting ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ๋งŒํผ ์ข‹์ง€๋Š” ์•Š์ง€๋งŒ ํ”„๋กœ์ ํŠธ์˜ ํŒŒ์ผ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š”์ง€ ํ•œ ๋ˆˆ์— ํ™•์ธํ•˜๊ธฐ์—๋Š” ๊ดœ์ฐฎ์€ ๋Œ€์•ˆ์ž…๋‹ˆ๋‹ค.

๋ˆ„๊ตฌ๋“ ์ง€ Java ํŒŒ์ผ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?
์—ด๋ ค ์žˆ๋Š” ํŒŒ์ผ์˜ ์˜ค๋ฅ˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฌธ์ œ ํŒจ๋„์—์„œ ๋ชจ๋“  ํŒŒ์ผ์˜ ๋ชจ๋“  ์˜ค๋ฅ˜๋ฅผ ์–ธ์ œ๋“ ์ง€ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ ๋†๋‹ดํ•˜๋Š” ๊ฑฐ์ง€? ์•ฝ 2,000๊ฐœ์˜ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณดํ‘ธ๋ผ๊ธฐ ์˜ค๋ฅ˜๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜๋™์œผ๋กœ ๋ชจ๋“  ํŒŒ์ผ์„ ์—ด์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ???

vs ์ฝ”๋“œ์—์„œ ts lint๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ์ „์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. tslint ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ˜์†”์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
VS Code๊ฐ€ src ํด๋”์˜ ๋ชจ๋“  ํŒŒ์ผ์—์„œ ์˜ค๋ฅ˜(๊ตฌ๋ฌธ ๋ฐ ๋ฆฐํ„ฐ)๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋„๋ก ํŠธ๋ฆฌ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ฆ‰, src ํด๋”์˜ ๋ชจ๋“  ํŒŒ์ผ(ts)์„ ๋™์‹œ์— ์—ฌ๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

node_modules์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ํด๋”์—์„œ ๊ฒ€์ƒ‰ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ... ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•ด์„œ๋งŒ. ๐Ÿ˜„
ํฌํ•จ/์ œ์™ธ ๊ฒฝ๋กœ ์˜ต์…˜์ด ์ข‹์„๊นŒ์š”? ...

์•ฝ ํ•œ ๋‹ฌ ์ „์— ์ž‘์—… ๊ณต๊ฐ„ ๋ทฐ์–ด์—์„œ ๋‚ด ํŒŒ์ผ ์˜†์— ์ž‘์€ ๋นจ๊ฐ„์ƒ‰ ์•„์ด์ฝ˜์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ทธ๋“ค์€ ์‚ฌ๋ผ์กŒ๊ณ  ๋‚ด๊ฐ€ ์–ด๋–ป๊ฒŒ ํ–ˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ƒˆ ๋ฒ„์ „์˜ VSCode๊ฐ€ ์ž‘๋™ ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ–ˆ๊ฑฐ๋‚˜ ์ด๋ฅผ ์ค‘๋‹จ์‹œํ‚จ ํ™•์žฅ์„ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ์ž‘๋™์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•? ๋‚˜๋Š” task.json์— ๋Œ€ํ•ด ๋“ค์–ด๋ณธ ์ ๋„ ์—†๊ณ  ์ด์ „์— ์ž‘๋™ํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์ด ์ด๊ฒƒ์ด ์ด์ œ ๊ธฐ๋ณธ ๋™์ž‘์ž„์„ ์‹œ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ 10์ดˆ ์ด๋‚ด์— ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ์•ฝ๊ฐ„์˜ ํŠธ๋ฆญ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ์—์„œ ๋ชจ๋‘ ๋ฐ”๊พธ๊ธฐ ์—ด๊ธฐ(Ctrl + Shift + H).

๋ฐ”๊พธ๋‹ค ; ์™€ ํ•จ๊ป˜ ;

๋ชจ๋‘ ๋ฐ”๊พธ๊ธฐ๋ฅผ ๋ˆ„๋ฅด์‹ญ์‹œ์˜ค. ๊ทธ๊ฒŒ ๋‹ค์•ผ ์ด์ œ ๋ฌธ์ œ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

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

์ด์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? Ajay์˜ ๋‹จ์ถ•ํ‚ค๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ ๋‹ค์†Œ ํ•ดํ‚น๋œ ๋Š๋‚Œ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ VSC์˜ ๋ช…๋ฐฑํ•˜๊ณ  ์‰ฌ์šด ์Šน๋ฆฌ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. "๋ชจ๋“  ์˜ค๋ฅ˜ ํ‘œ์‹œ/์—ด๋ฆฐ ํŒŒ์ผ์— ๋Œ€ํ•œ ์˜ค๋ฅ˜ ํ‘œ์‹œ" ์Šค์œ„์น˜๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ ๋ณ€๊ฒฝ ์‹œ ์ž๋™์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๋Œ€์‹  ๋˜ ๋‹ค๋ฅธ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. ํ•˜๋‹จ ํ‘œ์‹œ์ค„์— ๋ฒ„ํŠผ์ด ์žˆ๊ฑฐ๋‚˜ ๋ชจ๋“  ํŒŒ์ผ์„ ๊ฒ€์‚ฌํ•˜๋Š” ๋ช…์‹œ์ ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์ด ์žˆ์œผ๋ฉด ์™„์ „ํžˆ ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋งž์•„์š”, ๋ฌธ์ œ๋Š” ์—ด๋ ค์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ์„ ๊ฒ€์‚ฌํ•˜๋Š” TS ์„œ๋น„์Šค๋ฅผ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ๊ณ  ๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ ๋‹ซํ˜€ ์žˆ๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ ์ž๋™์œผ๋กœ ๊ฒ€์‚ฌ๋˜์ง€ ์•Š๋Š” ํŒŒ์ผ์„ ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ? ๋”ฐ๋ผ์„œ ์‰ฌ์šด ์†”๋ฃจ์…˜์€ ๋ฌธ์ œ ์ฐฝ์—์„œ ๋‹จ์ผ ์†Œ์Šค์—์„œ ๋ชจ๋“  TS ๋ฌธ์ œ๋ฅผ ์ˆ˜์‹ ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ?

vscode ํŒ€(?)์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์ œ์•ˆ:

์• ๋“œ์˜จ์ด๋‚˜ vscode ์ž‘์—… ๋ฌธ์ œ ๋งค์ฒ˜๋ฅผ ํ†ตํ•ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ? ๊ทธ๋Ÿฌ๋ฉด ๋ฌธ์ œ ์ฐฝ์ด ๋ฌด์—‡์„ ์–ธ์ œ ํ‘œ์‹œํ•˜๋Š”์ง€ ์Šค์Šค๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๊นŒ? ๊ทธ๋Ÿฐ ๋‹ค์Œ ์–ด๋–ป๊ฒŒ๋“  vscode๊ฐ€ ํ•ด๋‹น ๋‚ด์šฉ์„ ํ‘œ์‹œํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? vscode ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด์™€ ๊ฐ™์€ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•œ์ง€ ๋งํ•ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์ด ๊ธฐ๋ณธ์ ์ธ ๊ฒƒ๋“ค์„ vscode ์ž์ฒด์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ๋‹ซ์„ ๋•Œ TS ์˜ค๋ฅ˜๊ฐ€ ์ €์ ˆ๋กœ ํ•ด๊ฒฐ๋˜๋Š” ๊ฒƒ๊ณผ๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค... TS ์„œ๋ฒ„๊ฐ€ ๋ชจ๋“  ํŒŒ์ผ์„ ์—ด๊ฑฐ๋‚˜ ์—ด์ง€ ์•Š๊ณ  ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•˜๋ฉด ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์„ ํƒ์‚ฌํ•ญ์ด์ง€๋งŒ ์„ ํƒ์‚ฌํ•ญ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๊ฐ€์žฅ ๋จผ์ € ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋ชจ๋“  ๋ฌธ์ œ ์ค‘ ๊ฐ€์žฅ ์ค‘์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? IDE๋Š” ์ˆ˜์ •๋  ๋•Œ๊นŒ์ง€ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

์ข‹์•„, ์ด๊ฒƒ์€ ํ•ดํ‚ค ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.
์ž‘์—…์ด $tsc-watch๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜์—ฌ @plievone ์˜ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ Visual Studio Code๊ฐ€ ์—ด๋ฆด ๋•Œ๋งˆ๋‹ค ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋Š” AutoLaunch์™€ ๊ฐ™์€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. (https://marketplace.visualstudio.com/items?itemName=philfontaine.autolaunch)

@mateuscb ์˜ ์ œ์•ˆ์„ ํ™•์žฅํ•˜๋ ค๋ฉด ํŒŒ์ผ ํƒ์ƒ‰๊ธฐ์˜ ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด์—์„œ ํŠน์ • ํด๋”๋ฅผ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์œผ๋กœ ํด๋ฆญํ•˜๊ณ  "ํด๋”์—์„œ ๋ฌธ์ œ ์ฐพ๊ธฐ"๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ๋ฒ”์œ„ ๋Œ€ ์†๋„ ๊ฐ„์˜ ๊ท ํ˜•์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

@ajayRaghav37 ์ œ์•ˆ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. vscode๊ฐ€ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.
์  ์žฅ, ์•ž์œผ๋กœ ๋‹ค์‹œ๋Š” ts ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค)

์ด๊ฒƒ์ด ์–ธ์ œ ํŒŒ์ดํ”„๋ผ์ธ์— ํฌํ•จ๋  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋‚˜ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ๊ธฐ๋Šฅ์„ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ES-Lint๋Š” VS Code์— ์ƒˆ๋กœ์šด ์ž‘์—…์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—… ๊ณต๊ฐ„ ์„ค์ •์—์„œ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

"eslint.provideLintTask": true

ํ„ฐ๋ฏธ๋„ ๋ฉ”๋‰ด๋กœ ์ด๋™ํ•˜์—ฌ ์ž‘์—… ์‹คํ–‰์„ ์„ ํƒํ•œ ๋‹ค์Œ

eslint: ์ „์ฒด ํด๋”๋ฅผ ๋ฆฐํŠธํ•ฉ๋‹ˆ๋‹ค.

ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์ œ๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

.\node_modules\.bin\eslint.cmd --fix .

์ฐธ์กฐ: https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint

์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ VS Code์—์„œ ๋ฌธ์ œ ์Šค์บ๋„ˆ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์ง€๋งŒ eslint๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ด๊ฒƒ์€ ์ถฉ๋ถ„ํžˆ ์ข‹์€ ๋Œ€์•ˆ์ž…๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๋” ํฐ ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@ajayRaghav37 , eslint๊ฐ€ ํƒ€์ดํ•‘ ์˜ค๋ฅ˜๋ฅผ ์žก์„ ์ˆ˜ ์—†๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๋‹จ์ง€ linting ๊ทœ์น™์ผ ๋ฟ์ž…๋‹ˆ๋‹ค:

https://github.com/typescript-eslint/typescript-eslint/issues/36#issuecomment -478820127

+1

์ด ์œ„๋กœ. ๋˜ํ•œ ๋‚ด์žฅ TS ๊ฒ€์‚ฌ ๋ฐ ๋ฆฐํŠธ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ๋นŒ๋“œ ์ž‘์—…์˜ ๊ฒฐ๊ณผ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

+1

์ด์ œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด tsc --noEmit -w ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ VSCode์™€ ts-server ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์™œ ๊ทธ๋ ‡๊ฒŒ ์˜ค๋žซ๋™์•ˆ ์‹œํ–‰๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ?

์—ฌ๊ธฐ TS ์–ธ์–ด ์„œ๋ฒ„์— ๋Œ€ํ•ด ์ž˜ ์•„๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? LSP API์— ์ด๊ฒƒ์„ IDE์— ์ „๋‹ฌํ•  ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์ด ์„ฑ๋Šฅ ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ? ๋ถ„๋ช…ํžˆ ์‚ฌ๋žŒ๋“ค์€ ์ด ๊ธฐ๋Šฅ์˜ ๋ถ€์กฑ์— ๋Œ€ํ•ด ์—ด์ •์ ์ด๋ฏ€๋กœ(์ €๋Š”) ์ด ๊ธฐ๋Šฅ์ด ๊ฒฐ์Šน์„ ์„ ํ†ต๊ณผํ•˜๋Š” ๋ฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋„์›€์— ๊ด€์‹ฌ์ด ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๊ฐ€ VS Code ํŒ€์˜ ์ธ๋ ฅ ๋ถ€์กฑ์ธ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

๋ฌธ์ œ๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ(VS Code ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๋” ํฐ ์˜ํ–ฅ, LSP ๋ณ€๊ฒฝ ํ•„์š”, ๋ถˆ๋ช…ํ™•ํ•œ ์„ฑ๋Šฅ ์˜ํ–ฅ, UX ๊ณ ๋ ค ์‚ฌํ•ญ) ์ด ์‚ฌ์‹ค์„ ์•„๋Š” ๊ฒƒ์€ ๊ฒ‰๋ณด๊ธฐ์— ๊ฐ„๋‹จํ•ด ๋ณด์ด๋Š” ์ด ๊ธฐ๋Šฅ์ด ์™œ ๊ทธ๋ ‡๊ฒŒ ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š”์ง€ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ฑ…์ž„์ด Visual Studio Code ํŒ€์ด ์•„๋‹ˆ๋ผ TypeScript ํŒ€์— ์žˆ๋‹ค๋Š” ์ ์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์˜๊ฒฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ VS Code์— ๋‚ด์žฅ๋œ '@ts-check' ๊ธฐ๋Šฅ์—๋„ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 'tsc' ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ์ž‘์—…์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ด ๊ฒŒ์‹œ๋ฌผ์—์„œ ์–ธ๊ธ‰ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ tsc๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์ €๋Š” @ts-check ๋ฐ jsdoc๋งŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค).

์ด์ „์—๋Š” ์˜ค๋ฅ˜๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ํด๋ฆญํ•˜๊ณค ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ง€๋ฃจํ•œ ์ผ์ด์—ˆ์ง€๋งŒ ์ ์–ด๋„ ํŒŒ์ผ์„ ๋‹ซ์•˜์„ ๋•Œ ์‚ฌ์ด๋“œ ๋ฐ”์—์„œ ๋ฌธ์ œ๊ฐ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ง€๋‚œ ๋ช‡ ๋‹ฌ ๊ฐ„์˜ ์—…๋ฐ์ดํŠธ ์ค‘ ํ•˜๋‚˜ ์ดํ›„์— ์ด ๋ฌธ์ œ๊ฐ€ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค: #73153.

์ด๊ฒƒ์ด ๊ฐ€์žฅ ๋จผ์ € ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋ชจ๋“  ๋ฌธ์ œ ์ค‘ ๊ฐ€์žฅ ์ค‘์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? IDE๋Š” ์ˆ˜์ •๋  ๋•Œ๊นŒ์ง€ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋™์˜ํ•œ๋‹ค.

์–ธ์ œ?

์œ„์˜ 'ํ—ˆ์šฉ๋œ' ์†”๋ฃจ์…˜์ด ์ž‘๋™ํ•˜์ง€๋งŒ ์ผ๋ถ€ ํ•„๋“œ๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

{
      "label": "Watch TS Errors",
      "type": "shell",
      "command": "tsc",
      "args": ["-w", "-p", ".", "--noEmit"],
      "isBackground": true,
      "problemMatcher": "$tsc-watch"
}

๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์•„์ง ์ž‘์—…์ด ์—†๋Š” ๊ฒฝ์šฐ tasks.json ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ https://code.visualstudio.com/docs/editor/tasks ๋ฅผ ์ฐธ์กฐ

์ด์™€ ๊ฐ™์€ ๋นŒ๋“œ ์ž‘์—…์œผ๋กœ tsc ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ VS Code์˜ ๋‚ด์žฅ TS ์„œ๋ฒ„๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚ด๊ฐ€ ๋ฌป๋Š” ์ด์œ ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‚ด์žฅ TS ์„œ๋ฒ„์˜ ์˜ค๋ฅ˜์™€ ์ž‘์—…์˜ ์˜ค๋ฅ˜, ๋•Œ๋กœ๋Š” ๋™๊ธฐํ™”๋˜์ง€ ์•Š๋Š” ๋‘ ๊ฐ€์ง€ ์˜ค๋ฅ˜ ์„ธํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

IDE๊ฐ€ ์†์ƒ๋˜์–ด Typescript ํ”„๋กœ์ ํŠธ ์ž‘์—…์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฒ„์ „ 1.28.2๋ฅผ ๊ณ ์ˆ˜ํ•˜๊ณ  ์—…๋ฐ์ดํŠธ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด์ƒํ•˜์ง€๋งŒ ์ด์ „์—๋Š” ์–ด๋–ป๊ฒŒ๋“  ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌด์Šจ ์ผ์ด์•ผ? ๊ทธ๋ฆฌ๊ณ  ์–ธ์ œ ๋‹ค์‹œ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? ๋ฒŒ์จ 1๋…„์ด ์ง€๋‚ฌ๋Š”๋ฐ ๋ณ€ํ™”์˜ ๊ธฐ๋ฏธ๊ฐ€ ๋ณด์ด์ง€ ์•Š๋Š”๊ตฐ์š”...

2019๋…„ 10์›”์ด๋ฉฐ ์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋Œ€๋Ÿ‰์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ IDE๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด 3๋…„.... NNNNICCCEEEEEEEEEEEEEE

๋‹ค๋ฅธ IDE๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด 3๋…„.... NNNNICCCEEEEEEEEEEEEEE

VSCode๋Š” IDE๊ฐ€ ์•„๋‹˜์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๊ฒƒ์€ Editor์™€ IDE ์‚ฌ์ด์— ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์–ด์จŒ๋“ , ๋‚˜๋Š” ๊ทธ๋“ค์ด ๊ทธ๊ฒƒ์„ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค

๋‹ค๋ฅธ IDE๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด 3๋…„.... NNNNICCCEEEEEEEEEEEEEE

VSCode๋Š” IDE๊ฐ€ ์•„๋‹˜์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๊ฒƒ์€ Editor์™€ IDE ์‚ฌ์ด์— ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์–ด์จŒ๋“ , ๋‚˜๋Š” ๊ทธ๋“ค์ด ๊ทธ๊ฒƒ์„ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค

๋ฌด์Šจ ์ƒ๊ด€์ด์•ผ. ๊ทธ๋Ÿฌ๋‚˜ ts ํŒŒ์ผ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋นŒ์–ด๋จน์„ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค.

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

๋ฌด์Šจ ํ—›์†Œ๋ฆฌ

๋ฌด์Šจ ํ—›์†Œ๋ฆฌ

์•ฝ๊ฐ„์˜ ๊ด€์ :

Microsoft๋Š” ์ผ๋ถ€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งŒ๋“ค์–ด ๋ฌด๋ฃŒ๋กœ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๊ฐ์‚ฌํ•˜๋Š” ์ˆ˜๋ฐฑ๋งŒ ๋ช…์˜ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
Microsoft๋Š” ๊ท€ํ•˜์—๊ฒŒ ์ด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ฐ•์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ๊ทธ๋“ค์ด ์ด๋ก ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋งŒํผ ์™„๋ฒฝํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋‹น์‹ ์—๊ฒŒ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ฌด๋ฃŒ๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ํ™”๋ฅผ ๋ƒ…๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ทธ๋Š” ๋™์ผํ•œ "IDE"์˜ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  IDE๋Š” ์˜คํ”ˆ ์†Œ์Šค์ด๋ฉฐ pull ์š”์ฒญ์„ ์ˆ˜๋ฝํ•ฉ๋‹ˆ๋‹ค...

๋‚˜๋Š” ์ด๊ฒƒ์„ ์˜ค๋žซ๋™์•ˆ ์ง€์ผœ๋ณด์•˜๊ณ  ์—ฌ์ „ํžˆ ์˜ค๋ฅ˜ ๋ฐ ๊ฒฝ๊ณ ๋ฅผ ์ถ”์ ํ•˜๋Š” ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์œผ๋ฉฐ ๊ณต๊ฐœ ์ถœ์‹œ ์ดํ›„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, VS Code๋Š” ์˜์‹ฌํ•  ์—ฌ์ง€ ์—†์ด JS/TS ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์ตœ๊ณ ์˜ IDE์ž…๋‹ˆ๋‹ค. ์‹ฌ์ง€์–ด Github์— ์ด์–ด ๋‘ ๋ฒˆ์งธ๋กœ ์ตœ๊ณ ์˜ MS ์ œํ’ˆ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ๊ณผ ์„ฑ๋Šฅ์ด ํ™•์‹คํžˆ ๊ฐœ์„ ๋˜์—ˆ์œผ๋ฉฐ ํ™•์žฅ ๊ธฐ๋Šฅ์˜ ์—„์ฒญ๋‚œ ์–‘์€ ์ €๋ฅผ ๋งค์šฐ ๊ธฐ์˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ, ๋ฌธ์„œ๊ฐ€ ๋” ๋‚˜์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ชจ๋“  ๊ธฐ์ˆ  ๋ฌธ์„œ์— ๋Œ€ํ•ด ๊ทธ๋ ‡๊ฒŒ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

VS Code ํŒ€์€ ๋” ๋‚˜์€ ๋„๊ตฌ์™€ ํ†ตํ•ฉ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๋Š์ž„์—†์ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์—ฌ์ „ํžˆ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์š”๊ตฌํ•˜๊ฑฐ๋‚˜ ์ •์ค‘ํ•˜๊ฒŒ ์ด ๊ธฐ๋Šฅ์„ ๊ณ„์† ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์— ์ถ”๊ฐ€ - ์ด์ œ tsc -w์˜ ์ถœ๋ ฅ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•ด ๋ฏธ๋ฆฌ ๊ตฌ์„ฑ๋œ ์ž‘์—…์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Mac์—์„œ ํ„ฐ๋ฏธ๋„ -> ์ž‘์—… ๊ตฌ์„ฑ... -> tsc: watch - tsconfig.json. ๊ทธ๋Ÿฐ ๋‹ค์Œ ctrl+shift+B๋ฅผ ๋ˆ„๋ฅด๊ณ  ์ž‘์—…์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

3๋…„ ํ›„... ์†Œ์‹์ด ์žˆ๋‚˜์š”?

๋Œ€๊ทœ๋ชจ ๋ฆฌํŒฉํ† ๋ง ์ค‘. ์˜ํ–ฅ์„ ๋ฐ›๋Š” ๋ชจ๋“  ํŒŒ์ผ์„ ๋‹ซ์œผ๋ฉด ๋” ์ด์ƒ ๋ชจ๋“  ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

3๋…„ ์•„์ง ์—ด๋ ค์žˆ์Šต๋‹ˆ๋‹ค :๋Œ„์„œ:

3๋…„, ์•„์ง ์—ด๋ ค์žˆ๋‹ค

์˜ˆ, ๋ฐ”๋ณด์˜ ๋ฌด์ž‘์œ„ downvotes.

๊ทธ๋‚˜์ €๋‚˜ ์ด๊ฑด ์งœ์ฆ๋‚˜๋Š” ๋ฌธ์ œ์•ผ!!! ์‹ฌ๊ฐํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์ ํŠธ์— ์ˆ˜๋ฐฑ ๊ฐœ์˜ ํŒŒ์ผ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ๊ณ„์…จ์Šต๋‹ˆ๊นŒ?
๋งˆ์Œ์œผ๋กœ ์–ด๋–ป๊ฒŒ ๊ทธ๋“ค์„ ์ถ”์ ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

์‚ฌ๋žŒ๋“ค์ด IDE๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.....

๊ทธ๋ฆฌ๊ณ  ์ด์ œ๋Š” Visual Studio์™€ Intellisense์—๋„ ๋•Œ๋•Œ๋กœ ์ „ํŒŒ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Btw ์ž‘์—…์€ ์ตœ์†Œํ•œ ์ด๋ฅผ ์™„ํ™”ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ ts ํŒŒ์ผ์˜ ๊ฒฝ์šฐ ์ผ๋ถ€ ์ œ์–ด ์Šคํฌ๋ฆฝํŠธ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. vscode์˜ ํ™•์žฅ ๊ด€๋ฆฌ์ž์—์„œ ๋ชจ๋“  angular/typescript ํ™•์žฅ์œผ๋กœ ์„ค์น˜๋˜๋Š”์ง€ ์—ฌ๋ถ€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ž‘์—… ๊ฒ€์ƒ‰ ํ‘œ์‹œ์ค„([์—ฌ๊ธฐ]์— ํ‘œ์‹œ๋จ)(https://code.visualstudio.com)์—์„œ ๊ฒ€์ƒ‰ํ•˜๋ฉด /docs/editor/tasks) ์ปดํŒŒ์ผํ•  ๋•Œ๋งˆ๋‹ค ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์‹œ๊ณ„ ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋‹ค๋ฅธ ์ž‘์—…์ธ ์ผ๋ฐ˜ ์ปดํŒŒ์ผ ํ”„๋กœ์„ธ์Šค์™€ ํ•จ๊ป˜ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž„).

๋‚˜๋Š” ์ด๊ฒƒ ๋•Œ๋ฌธ์— ๋ฌธ์ œ ํƒญ์ด ์“ธ๋ชจ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ ์ ˆ๋Œ€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋Œ€์‹  ํ„ฐ๋ฏธ๋„์—์„œ ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ๊ฒƒ์„ ์ œ๊ณตํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ปดํŒŒ์ผ๋Ÿฌ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ tsc -w ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ์‹ถ๊ฑฐ๋‚˜ ์ „ํ˜€ ๋ณด๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ํŒŒ์ผ์ด ์—ด๋ฆฌ๋“  ๋ง๋“  ์ƒ๊ด€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

๊ธ€์Ž„, ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ Problems ํƒญ์—์„œ ์—ด๋ฆฐ ํŒŒ์ผ์— ๋Œ€ํ•ด์„œ๋งŒ ์˜ค๋ฅ˜๋ฅผ ๋ณด๋Š” ๊ฒƒ์ด ๊ทธ๋ ‡๊ฒŒ ์ค‘์š”ํ•˜๋‹ค๋ฉด ๊ทธ๋Œ€๋กœ ๋‘์‹ญ์‹œ์˜ค.

๊ทธ๋Ÿฌ๋‚˜ Visual Studio์—์„œ์™€ ๊ฐ™์ด Build Output ์™€ ๊ฐ™์ด ๋‹ค๋ฅธ ํƒญ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ํƒญ์€ ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์˜ค๋ฅ˜ ๋ฐ ๊ฒฝ๊ณ ๋ฅผ ๊ฐ„๋‹จํ•œ ํ•œ ์ค„ ํ…์ŠคํŠธ๋กœ ํ‘œ์‹œํ•˜๊ณ  ์ด๋ฅผ ๋‘ ๋ฒˆ ํด๋ฆญํ•˜๋ฉด ํŒŒ์ผ์ด ์—ด๋ฆฌ๊ณ  ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ์ค„์— ๋ฐ”๋กœ ์บ๋Ÿฟ์ด ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ F4 / Shift-F4 ๋ฐ”๋กœ ๊ฐ€๊ธฐ๋Š” ๋‹ค์Œ/์ด์ „ ์˜ค๋ฅ˜๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ๊ทธ๋ ‡๊ฒŒ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

์ด ํƒญ์„ ์™„์ „ํžˆ ์ง€์šฐ๊ณ  ํŽธ์ง‘ํ•  ๋•Œ๋งˆ๋‹ค ๋‹ค์‹œ ์ฑ„์šฐ์‹ญ์‹œ์˜ค. ๊ทธ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„๋‹ˆ๋ฉด ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด์— ๋Œ€ํ•œ ํ™•์žฅ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ชจ๋“  .ts ํŒŒ์ผ์„ ์—ด๋ ค๋ฉด "์ผ์น˜ํ•˜๋Š” ํŒŒ์ผ ์—ด๊ธฐ" ํ™•์žฅ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์ด ์•ฝ๊ฐ„ ๋ฌด๊ฒ์ง€๋งŒ ์ ์–ด๋„ ์ž‘์—…์„ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

typescript ์–ธ์–ด ์„œ๋ฒ„๊ฐ€ ๋‹จ์ผ ์Šค๋ ˆ๋“œ์ด๊ณ  C#์˜ ์ปดํŒŒ์ผ๋Ÿฌ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๊ฐ€๋” ํŒŒ์ผ์„ ์—ด๊ณ  # ๋ช…๋ น ํŒ”๋ ˆํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฆ„์œผ๋กœ ์œ ํ˜•์„ ์ฐพ์œผ๋ ค๊ณ  ํ•˜๋Š”๋ฐ ์•„๋ฌด ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ ์ด ๊ธฐ๋Šฅ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ž

์—ฃ์ง€์—์„œ ์‚ด๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ๋‹ค์Œ VS Code ๋‚ด๋ถ€์ž ๋นŒ๋“œ๋Š” ์‹คํ—˜์ ์ธ ํ”„๋กœ์ ํŠธ ์ „์ฒด์˜ ์˜ค๋ฅ˜ ๋ณด๊ณ ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” "typescript.tsserver.experimental.enableProjectDiagnostics" ์„ค์ •์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค.

Feb-06-2020 16-15-20

์ด๊ฒƒ์€ ์ƒ์‚ฐ ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค! ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ์•Œ๋ ค์ ธ ์žˆ์œผ๋ฉฐ ์ธํ…”๋ฆฌ์„ผ์Šค๊ฐ€ ์†์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ด์–ด์ฃผ์„ธ์š”.

์—ฃ์ง€์—์„œ ์‚ด๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ๋‹ค์Œ VS Code ๋‚ด๋ถ€์ž ๋นŒ๋“œ๋Š” ์‹คํ—˜์ ์ธ ํ”„๋กœ์ ํŠธ ์ „์ฒด์˜ ์˜ค๋ฅ˜ ๋ณด๊ณ ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” "typescript.tsserver.experimental.enableProjectDiagnostics" ์„ค์ •์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค.

Feb-06-2020 16-15-20

์ด๊ฒƒ์€ ์ƒ์‚ฐ ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค! ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ์•Œ๋ ค์ ธ ์žˆ์œผ๋ฉฐ ์ธํ…”๋ฆฌ์„ผ์Šค๊ฐ€ ์†์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ด์–ด์ฃผ์„ธ์š”.

์ž˜ํ–ˆ์–ด~

์ด ๊ธฐ๋Šฅ์˜ ์ง„ํ–‰ ์ƒํ™ฉ์„ ์–ด๋””์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ค€๋น„๊ฐ€ ๋˜๋ฉด VS ์ฝ”๋“œ์˜ ํ‘œ์ค€ ๋ฒ„์ „์— ์ถ”๊ฐ€๋˜๊ธฐ๋ฅผ ๊ฐ„์ ˆํžˆ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฃ์ง€์—์„œ ์‚ด๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ๋‹ค์Œ VS Code ๋‚ด๋ถ€์ž ๋นŒ๋“œ๋Š” ์‹คํ—˜์ ์ธ ํ”„๋กœ์ ํŠธ ์ „์ฒด์˜ ์˜ค๋ฅ˜ ๋ณด๊ณ ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” "typescript.tsserver.experimental.enableProjectDiagnostics" ์„ค์ •์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค.

Feb-06-2020 16-15-20

์ด๊ฒƒ์€ ์ƒ์‚ฐ ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค! ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ์•Œ๋ ค์ ธ ์žˆ์œผ๋ฉฐ ์ธํ…”๋ฆฌ์„ผ์Šค๊ฐ€ ์†์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ด์–ด์ฃผ์„ธ์š”.

๋†€๋ผ์šด ์ž‘์—…์„ ์œ„ํ•ด Visual Studio Code์— ๊ธฐ์—ฌํ•œ ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์—ฃ์ง€์—์„œ ์‚ด๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ๋‹ค์Œ VS Code ๋‚ด๋ถ€์ž ๋นŒ๋“œ๋Š” ์‹คํ—˜์ ์ธ ํ”„๋กœ์ ํŠธ ์ „์ฒด์˜ ์˜ค๋ฅ˜ ๋ณด๊ณ ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” "typescript.tsserver.experimental.enableProjectDiagnostics" ์„ค์ •์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‹ค๋ฅธ ๋ฆฐํ„ฐ์™€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ์–ธ์ œ ๋‚ด๊ฐ€ ํ™œ์„ฑํ™” ๋ฌธ์ œ ํ–ˆ์–ด "typescript.tsserver.experimental.enableProjectDiagnostics" , ํƒ€์ดํ”„ ์Šคํฌ๋ฆฝํŠธ์˜ ๋ฆฐํ„ฐ์€ ๊ฒฐ๊ตญ ํ†ต๊ณผ์˜ ํ† ๋ผ ๊ตฌ๋ฉ ์•„๋ž˜๋กœ ์ด๋™ node_modules , ๋ฐฐํฌ ํŒŒ์ผ๊ณผ์—์„œ ์˜ค๋ฅ˜์˜ ์ˆ˜๋ฐฑ์„ ๊ตด์ฐฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ "exclude" tsconfig.json ์—๋Š” "node_modules" ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ @vdh ์™€ ๋™์ผํ•œ ํšจ๊ณผ๋ฅผ

๋‚ด eslint/ํŽธ์ง‘๊ธฐ ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    "editor.codeActionsOnSave": {
        "source.fixAll.eslint": true
    },
    "eslint.validate": [
        "javascript",
        "javascriptreact",
        "typescript",
        "typescriptreact"
    ],
    "[javascript]": {
        "editor.formatOnSave": false
    },
    "[javascriptreact]": {
        "editor.formatOnSave": false
    },
    "[typescript]": {
        "editor.formatOnSave": false
    },
    "[typescriptreact]": {
        "editor.formatOnSave": false
    },
    "eslint.enable": true

๋น„์ฆˆ๋‹ˆ์Šค์˜ ์ฒซ ๋ฒˆ์งธ ์ˆœ์„œ๋Š” ๊ฒฝ๋กœ์— node_modules๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ์ด ์ตœ์†Œํ•œ ์ €์žฅ ์‹œ ์ž‘์—…์— ๋Œ€ํ•ด ๋ฌด์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋งค์šฐ ๋†’์ด ํ‰๊ฐ€๋˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
@Martaver @vdh ์™€ ๊ฐ™์€ ๋™์ž‘์„
ํ•„ํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ง€๊ธˆ์€ "ํ•ด๊ฒฐ"ํ–ˆ์Šต๋‹ˆ๋‹ค.

!*node_modules, !*.vscode

ํ„ฐ๋ฏธ๋„ ๋ณด๊ธฐ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. (์‹œ๊ฐ์ ์œผ๋กœ๋งŒ ๋‹ค๋ฆ„). ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด๊ฒƒ์„ ๊ฐ€์ง€๊ณ  ๋…ธ๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ฒฝ์šฐ.

Annotation 2020-04-17 184432

@blackfan23 ์€ ๋Ÿฌ๊ทธ ๋ฐ‘์˜ ๋จผ์ง€๋ฅผ ์“ธ์–ด ๊ฐ™๋”๋ผ๊ตฌ์š” :D

@Martaver ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ:

"typescript.tsserver.experimental.enableProjectDiagnostics.ignores": [
  "**/node_modules/**"
]

์ด์ƒ์ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ 0์ด ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์—์„œ 1,000๊ฐœ ์ด์ƒ์˜ ๋ฌธ์ œ๋ฅผ ๋ณด๋Š” ๊ฒƒ์€ ๋”์ฐํ•ฉ๋‹ˆ๋‹ค.

@blackfan23 node_modules ๊ธ‰๋ฝ์œผ๋กœ ์ธํ•œ ๊ณผ๋„ํ•œ CPU ๋ณ€๋™์œผ๋กœ ์ธํ•ด ์˜ต์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค.

@vdh tsconfig์—์„œ skipLibCheck ๋ฅผ true๋กœ ์„ค์ •ํ•˜๊ณ  "๋ฌธ์ œ" ํƒญ์ด node_modules์˜ ์˜ค๋ฅ˜ ํ‘œ์‹œ๋ฅผ ์ค‘์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด stackoverflow ์Šค๋ ˆ๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด ์˜ต์…˜์„ ์ผœ๋ฉด ์œ ํ˜• ๊ฒ€์‚ฌ๊ฐ€ ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค. VS ์ฝ”๋“œ ๋˜๋Š” ํƒ€์ดํ”„์Šคํฌ๋ฆฝํŠธ ํŒ€์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด ์˜ต์…˜์„ ์ผค ๋•Œ์˜ ์žฅ๋‹จ์ ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@mjbvz
์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค! ๊ฐ์‚ฌ ํ•ด์š”!
ํ•˜๋‚˜์˜ ๋ช…๋ น์œผ๋กœ ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜์— ๋Œ€ํ•ด "๋ชจ๋‘ ์ˆ˜์ •"์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

Typescript๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์–ธ์–ด๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”„๋กœ์ ํŠธ์— ์ˆ˜๋ฐฑ ๊ฐœ์˜ PHP ํŒŒ์ผ์ด ์žˆ๊ณ  ๊ฐœ๋ณ„ ํŒŒ์ผ์— ๋Œ€ํ•ด Intellephense ํ™•์žฅ์—์„œ ๋ณด๊ณ ๋œ ๋ฌธ์ œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ ์›ํ•˜๋Š” ๊ฒƒ์€ ์ „์ฒด ์ž‘์—… ๊ณต๊ฐ„์— ๋Œ€ํ•ด ์ง„๋‹จ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ, ์ด๊ฒƒ์€ ๋˜ํ•œ ESLint๊ฐ€ node_modules ("ESLint: ๊ตฌ์„ฑ์„ ๋กœ๋“œํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค"๊ฐ€ ๊ฑฐ๊ธฐ์— ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํŠธ๋กค๋งํ•  ๋•Œ)๋กœ ๊ฐ™์€ ๊ธ‰๊ฐ•ํ•˜๋ฅผ ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ต๋‹ˆ๋‹ค. ์ด ๋ฒ„๊ทธ๋ฅผ ๋ฆฐํ„ฐ๋ณ„๋กœ ํŒจ์น˜ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๋Œ€์‹  ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ ๋˜๋Š” ๋ฌด์–ธ๊ฐ€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

node_modules๋ฅผ ์ œ์™ธํ•˜๋Š” ๊ฒƒ์€ no1 ์ˆ˜์ • ์‚ฌํ•ญ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค :)

์ด๊ฒƒ์€ ๋ถ€ํŒ…์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ - ๊ท€ํ•˜์˜ ๋งˆ์ผ๋ฆฌ์ง€๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฌผ๋ก  ๋ณด์ฆ์€ ์—†์Šต๋‹ˆ๋‹ค.

package.json์— typescript 3.9.2๊ฐ€ ์žˆ๊ณ  VSCode์˜ ์ž‘์—… ๊ณต๊ฐ„์—์„œ ํ•ด๋‹น ๋ฒ„์ „์„ ์„ ํƒํ–ˆ๋‹ค๋ฉด:

  1. https://www.npmjs.com/package/patch-package

  2. : ./patches/typescript+3.9.2.patch

diff --git a/node_modules/typescript/lib/tsserver.js b/node_modules/typescript/lib/tsserver.js
index 2b6f035..ac6c9b4 100644
--- a/node_modules/typescript/lib/tsserver.js
+++ b/node_modules/typescript/lib/tsserver.js
@@ -149353,7 +149353,7 @@ var ts;
                     return;
                 }
                 // No need to analyze lib.d.ts
-                var fileNamesInProject = fileNames.filter(function (value) { return !ts.stringContains(value, "lib.d.ts"); }); // TODO: GH#18217
+                var fileNamesInProject = fileNames.filter(function (value) { return !ts.stringContains(value, "lib.d.ts") && !ts.stringContains(value, "node_modules"); }); // TODO: GH#18217
                 if (fileNamesInProject.length === 0) {
                     return;
                 }
  1. npm install ๋˜๋Š” yarn
  2. VSCode ๋‹ค์‹œ ์‹œ์ž‘

= ์ด์ต?

@mjbvz ๋‚˜๋Š” ์ด๊ฒƒ์„ ํ™œ์„ฑํ™”ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ๊ณ  ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋Œ ๋•Œ์™€ ๋น„๊ตํ•˜์—ฌ "์ฝ”๋“œ ๋„์šฐ๋ฏธ(๋ Œ๋”๋Ÿฌ)" ํ”„๋กœ์„ธ์Šค์—์„œ ๊ฝค ๋†’์€ CPU ์‚ฌ์šฉ๋Ÿ‰์„ ๋ด…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ด€๋ จ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๊นŒ(ํ”„๋กœ์„ธ์Šค ์ด๋ฆ„์˜ "๋ Œ๋”๋Ÿฌ"๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๊ณ  ์ œ์•ˆํ•˜์ง€๋งŒ ๋ช‡ ๋ฒˆ ํ† ๊ธ€ํ–ˆ์Šต๋‹ˆ๋‹ค). ํ”„๋กœ์ ํŠธ๋Š” ํฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค(https://github.com/Dart-Code/Dart-Code).

์˜์›ํžˆ ์ง€์†๋˜์ง€๋Š” ์•Š์ง€๋งŒ MacBook ํŒฌ์„ ์ถฉ๋ถ„ํžˆ ํšŒ์ „์‹œ์ผœ ์ง€๊ธˆ ๋‹น์žฅ์€ ์ผœ๊ธฐ๋ณด๋‹ค๋Š” ๊บผ ๋†“์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€์— ์–ด๋–ค ์กฐ์‚ฌ๊ฐ€ ๋œ ์ด์œ  "typescript.tsserver.experimental.enableProjectDiagnostics" ํ•ญ์ƒ ๋ชจ๋“ ์— ๋‹ค์ด๋น™ ๋‚ด๋ถ€์˜ ํŒŒ์ผ node_modules , ๋ฆฐํ„ฐ์˜ CONFIGS ์„ค์ •์—์„œ ์šฐ๋ฆฌ์˜ ๋‹ค์–‘ํ•œ ์‹œ๋„๊ฐ€ ์‹คํŒจ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํ”ผํ•˜๊ธฐ ์œ„ํ•ด node_modules ?

์ด ์ž ์žฌ์ ์œผ๋กœ ๋ฉ‹์ง„ ๊ธฐ๋Šฅ์€ ์›์น˜ ์•Š๋Š” ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ๋ฐœ์ƒํ•˜๋Š” ๊ณผ๋„ํ•œ CPU ๋ณ€๋™์œผ๋กœ ์ธํ•ด ์™„์ „ํžˆ ์ฃฝ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค๋ง์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค... ๐Ÿ˜ข

PROBLEMS ํŒจ๋„์— ๋‚˜ํƒ€๋‚˜๋Š” node_modules TypeScript ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ @vdh ์™€ ๋™์ผํ•œ ๋ฌธ์ œ๋ฅผ PROBLEMS ๋‚ด๊ฐ€ ์ผ์œผํ‚จ ๊ตฌ์„ฑ ๋ฌธ์ œ.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ tsconfig.json ์„ค์ •์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

"exclude": ["node_modules", "./node_modules/*"],

๋ฌธ์ œ๊ฐ€ ๋ณด์ด๋Š”์ง€ ์•„๋‹Œ์ง€์— ํŒจํ„ด์ด ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์˜์‹ฌ๋˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฌด์ž‘์œ„๋กœ ์™”๋‹ค๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€๊ณ  ๋•Œ๋กœ๋Š” vscode๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์ž ์‹œ ๋„์›€์ด ๋˜์—ˆ์ง€๋งŒ ๋‚˜์ค‘์— ๋‹ค์‹œ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ถ€ ํ”„๋กœ์ ํŠธ์— ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋ณด๋‹ค ๋” ๋งŽ์€ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.
  • ์ง€๊ธˆ์€ ๋ฌธ์ œ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š”๋ฐ ์ตœ๊ทผ ์—…๋ฐ์ดํŠธ๋กœ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ์—ฌ์ „ํžˆ Insiders ์—๋””์…˜์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„์˜ ์š”์ ์— ๋Œ€ํ•ด ์™„์ „ํžˆ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ด์„œ ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€๋ จ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ์ผํ™”๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฒ„์ „์—์„œ ์—ฌ์ „ํžˆ ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ์ด ๋ช‡ ๋ช… ์žˆ๋‹ค๋ฉด ์ƒˆ ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ง ํ•ด๋ณด์ง€ ์•Š์•„์„œ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ  #90430์˜ ํ•ด๊ฒฐ์ฑ…์€ typescript-tslint-plugin ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

@enko TSLint๋Š” 2019๋…„๋ถ€ํ„ฐ ESLint ๋ฅผ ์œ„ํ•ด ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” linter์— ๋Œ€ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์˜นํ˜ธํ•˜๋Š” ๊ฒƒ์€ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ข‹์€ ์†”๋ฃจ์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค.

typescript.tsserver.experimental.enableProjectDiagnostics ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

"editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  }

๋งค์šฐ ๋Š๋ฆผ( ๋‹จ์ผ ํŒŒ์ผ์„ ์ €์žฅํ•˜๋Š” ๋ฐ 2๋ถ„).

๋˜ํ•œ ๋‚˜ํƒ€๋‚˜๊ฑฐ๋‚˜ ์‚ฌ๋ผ์ง€๋Š” node_modules์—์„œ ์ž„์˜์˜ TS ์˜ค๋ฅ˜๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž‘์—…์—์„œ applyTo ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •ํ•˜๋ฉด ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋ณด๊ธฐ์— ์—†๋Š” ํŒŒ์ผ์˜ ๊ฒฝ์šฐ์—๋„ ์ปดํŒŒ์ผ์„ ๊ด€์ฐฐํ•˜๊ณ  ๋ฌธ์ œ ์ฐฝ์— ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ ํ•˜๋Š” ์ „์ฒด ์ž‘์—… ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "tsc watch",
      "type": "shell",
      "command": "tsc",
      "isBackground": true,
      "args": ["--build", "--watch"],
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "presentation": {
        "reveal": "never",
        "echo": false,
        "focus": false,
        "panel": "dedicated"
      },
      "problemMatcher": {
        "base": "$tsc-watch",
        "applyTo": "allDocuments"
      }
    }
  ]
}

@samesfahani-tuplehealth ์ด ์ž‘์—…์ด enableProjectDiagnostics ์™€ ์–ด๋–ป๊ฒŒ ์ง์ ‘์ ์œผ๋กœ ๊ด€๋ จ๋˜๋Š”์ง€ ๋งํ•˜๋„๋ก ์˜๊ฒฌ์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •์ด ์•„๋‹Œ ์ž„์‹œ _ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•_์œผ๋กœ ์ œ์•ˆ์ด๋ผ๊ณ  ๋‹ค์‹œ

@vdh ์ถฉ๋ถ„ํžˆ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๊ฐ€ ํŠนํžˆ enableProjectDiagnostics ์ •๋„๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋Š” ์•Š์ง€๋งŒ; ๋‹น๋ฉดํ•œ ๋ฌธ์ œ๋Š” ํ˜„์žฌ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ํŒŒ์ผ์˜ ๊ฒฝ์šฐ์—๋„ ์ „์ฒด ํ”„๋กœ์ ํŠธ์—์„œ ๋ฌธ์ œ๋ฅผ ๋ณผ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์›์น˜ ์•Š๋Š” node_modules ์˜ค๋ฅ˜ ๋ฌธ์ œ์™€ ๊ด€๋ จํ•˜์—ฌ ํŠน๋ณ„ํžˆ ๋…ผ์˜ํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. https://github.com/microsoft/vscode/issues/103539

@vhd / @martaver / @blackfan23 / @patroza / @jgoux / other ... ํ•ด๋‹น ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋‹จ์„œ๋ฅผ ๋” ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@jgoux ์™€ ๊ฐ™์€ ๋ฌธ์ œ๋Š” "source.fixAll.eslint": true ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. - eslint๋Š” ์—ด๋ ค ์žˆ๋Š” ํŒŒ์ผ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ํ™•์ธํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๊ณ  ๋ชจ๋“  ๋‹จ์ผ ๋ณ€๊ฒฝ์— ๋Œ€ํ•ด ์ „์ฒด ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. VSCode๊ฐ€ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ESLint ๋™์ž‘์„ ์ˆ˜์ •ํ•˜๋Š” ์ด์œ ๋ฅผ ๋ชจ๋ฅด์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์ฐจ๋‹จ์ž…๋‹ˆ๋‹ค.

"typescript.tsserver.experimental.enableProjectDiagnostics"๋Š” ์‹ค์ œ๋กœ ์ˆ˜์ • ๋ฐ ๊ฐœ์„ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํƒ€์ดํ”„์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด๋ฏธ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๊ฐ•๋ ฅํ•˜๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@samesfahani-tuplehealth๊ฐ€ ๊ฒŒ์‹œํ•œ ์†”๋ฃจ์…˜์€ ๋งค์šฐ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐ€์ ธ์˜จ ์œ ํ˜•์„ ํ•œ ํŒŒ์ผ์—์„œ ๋‹ค๋ฅธ ํŒŒ์ผ๋กœ ์ด๋™ํ•˜๊ณ  ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์ค‘๋‹จ๋œ ๋ชจ๋“  ์œ„์น˜๋ฅผ ์ฐพ์•„์•ผ ํ•  ๋•Œ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. CPU ์‚ฌ์šฉ๋ฅ ์ด ๋†’์ง€๋Š” ์•Š์ง€๋งŒ ํ•„์š”ํ•  ๋•Œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@phatmann ๊ทธ๊ฑด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด์ง€ , _์•„๋‹Œ_ ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์„ ๋ฌด์‹œํ•˜๊ณ  _์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ_์„ ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด _์•„๋‹™๋‹ˆ๋‹ค_. ๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ๋ˆ์งˆ๊ธด ๊ฒƒ์„ ์‹ซ์–ดํ•˜์ง€๋งŒ ์ด ํ›Œ๋ฅญํ•˜์ง€๋งŒ ์‹คํ—˜์ ์ธ ๊ธฐ๋Šฅ์„ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์„ ๋„๋Š” ๋งŽ์€ ์†Œ์Œ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ๊ด€์‹ฌ์„ ๋ฐ›์œผ๋ฉด ๋งค์šฐ ์œ ์šฉํ•œ ๊ฒƒ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@Vdh ๋ฌผ๋ก  ๋งž์Šต๋‹ˆ๋‹ค. (์‹ค์ œ๋กœ ์ž‘์—…์˜ ๋” ๊ฐ„๋‹จํ•œ ๋ฒ„์ „์ธ ๋‚ด์žฅ tsk:watch ์ž‘์—…์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋˜‘๊ฐ™์ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค). ๋‚ด ํ˜ผ๋ž€์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ๋„ˆ๋ฌด ํšจ๊ณผ์ ์ด๊ณ  ํšจ์œจ์ ์ด์–ด์„œ ์ด ๋ฌธ์ œ์—์„œ ์–ธ๊ธ‰๋œ ์‹ค์ œ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

@phatmann Typescript ๊ฐ์‹œ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ด๋ฏธ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹จ์ง€ TS ๊ฒ€์‚ฌ๋ฅผ ์‹คํ–‰์— ๋Œ€ํ•œ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ VSCode์˜ ๋ชจ๋“  ๊ฒ€์‚ฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. Typescript, ESLint, CSpell ๋“ฑ... ํŒŒ์ผ์„ ์—ฌ๋Š” ๊ฒƒ์„ ์žŠ์—ˆ๋”๋ผ๋„ ์ „์ฒด ํ”„๋กœ์ ํŠธ์—์„œ ์˜ค๋ฅ˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์ •๋ง ๊ฐ•๋ ฅํ•˜๊ณ  ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค(๋ชจ๋“  ํŒŒ์ผ์—์„œ ์ˆ˜๋™์œผ๋กœ ๊ฐ ๋ฆฐํ„ฐ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ ๋„ ํ„ฐ๋ฏธ๋„์—์„œ ์™ธ๋ถ€๋กœ).

ํ˜„์žฌ ์œ ์ผํ•œ ์ฃผ์š” ๊ฒฐํ•จ์€ node_modules ์™€ ๊ฐ™์ด ์ผ๋ฐ˜์ ์œผ๋กœ ๊ธˆ์ง€๋œ ํด๋”๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ง ๊ทธ๋Œ€๋กœ ๋ชจ๋“  ํŒŒ์ผ์„ ์ง€๋‚˜์น˜๊ฒŒ ์‹คํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

vscode๋กœ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ๊ฒ€์ƒ‰ํ–ˆ์ง€๋งŒ ์–ป์€ ๊ฒƒ์€ 4๋…„ ๋ฏธํ•ด๊ฒฐ ๋ฌธ์ œ... ๐Ÿ˜ข

๋ˆ์€ ์–ผ๋งˆ์ด๊ณ  ์–ด๋””๋กœ ๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

node_modules๋ฅผ ์Šค์บ”ํ•˜๋Š” ์ด ๊ธฐ๋Šฅ์— CPU ๋ฌธ์ œ๋‚˜ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ์„ ํฌํ•จ tsconfig.json ์ด ์—†๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

"files": []

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’์€ tsconfig๊ฐ€ ํฌํ•จ๋œ ํด๋” ๋˜๋Š” ๊ทธ ์•„๋ž˜์— ์žˆ๋Š” ๋ชจ๋“  TypeScript ํŒŒ์ผ์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋„ˆ๋ฌด ๋งŽ์€ ํŒŒ์ผ์„ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์€ ์›์‚ฌ ์ž‘์—… ๊ณต๊ฐ„๊ณผ ๋ณตํ•ฉ ์œ ํ˜• ์Šคํฌ๋ฆฝํŠธ "ํ”„๋กœ์ ํŠธ"๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ๋ชจ๋…ธ๋ ˆํฌ์—์„œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

ํ›Œ๋ฅญํ•œ ์กฐ์–ธ @dinofx. ๋˜ํ•œ ๋ฌธ์„œ์— ๋”ฐ๋ผ files ๋Œ€์‹  include ๋ฐ exclude ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      "include": ["src/**/*"],
      "exclude": ["node_modules", "test/**/*"],

๋งž์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ "ํฌํ•จ" ๊ธ€๋กœ๋ธŒ์™€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์ œ์™ธํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

"files": [] ๋Š” "์ž‘์—… ๊ณต๊ฐ„" tsconfig.json ํŒŒ์ผ(๋งŽ์€ ๋‹ค๋ฅธ tsconfig.json ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜๋Š” ํŒŒ์ผ)์— ๋Œ€ํ•ด ๋” ๊ฐ„๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ž˜ ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์ง€๋Š” ์•Š์ง€๋งŒ ํŒจํ‚ค์ง€ ๋ฐ ์ž‘์—… ๊ณต๊ฐ„์— ๋Œ€ํ•œ ๊ตฌ์„ฑ ํŒŒ์ผ์˜ ์ด๋ฆ„์„ tsconfig.json . ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋งŽ์€ ๊ธฐ๋Šฅ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์ด ๊ธฐ๋Šฅ, ์ฐธ์กฐ ์ฐพ๊ธฐ, ๋ฆฌํŒฉํ† ๋ง ๋“ฑ).

ํ™•์žฅ๋œ ๊ณต์œ  ๊ตฌ์„ฑ์˜ ๊ฒฝ์šฐ tsconfig.browser.json , tsconfig.node.json ๋“ฑ๊ณผ ๊ฐ™์€ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด๋ฆ„์€ "files" ๋˜๋Š” "includes" ์ด๋ฏ€๋กœ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@dinofx ํŒŒ์ผ ์ˆœํšŒ ๋ฌธ์ œ๋Š” Typescript์—๋งŒ ๊ตญํ•œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋ชจ๋…ธ๋ ˆํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰