Language-tools: ์–ธ์–ด ์„œ๋ฒ„์˜ ๊ณผ๋„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ

์— ๋งŒ๋“  2020๋…„ 06์›” 02์ผ  ยท  39์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: sveltejs/language-tools

์ด๊ฒƒ์€ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋Š” Svelte Language Server(SLS)์— ๋Œ€ํ•œ ๋‚ด ๊ฒฝํ—˜์— ๋Œ€ํ•œ ์ผ์ข…์˜ ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค.

์ ๋‹นํžˆ ํฐ Svelte ํ”„๋กœ์ ํŠธ์—์„œ Svelte Atom ํ™•์žฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๋ถ„์˜ ์ฝ”๋”ฉ ํ›„์— ์‹ฌ๊ฐํ•œ ์„ฑ๋Šฅ ์ €ํ•˜์™€ ์‹œ์Šคํ…œ ์ •์ง€๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. SLS ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ตœ๋Œ€ 2GB์˜ RAM์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ๋ถ„๋ฆฌํ•œ ํ›„ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์€ ํŒŒ์ผ์ด /jsconfig.json ๋ฐ /__sapper__/* ์ž„์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ๋นŒ๋“œ์™€ ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ๋ฅผ ๋ชจ๋‘ ์ปดํŒŒ์ผํ–ˆ์„ ๋•Œ __sapper__ ํด๋” ํฌ๊ธฐ๊ฐ€ ๋‘ ๋ฐฐ์˜€์Šต๋‹ˆ๋‹ค.

jsconfig.json ์—๋Š” ํŠนํžˆ ํฅ๋ฏธ๋กœ์šด ํ•„๋“œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

{
  "exclude": ["node_modules", "dist"]
}

SLS๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ ์—์„œ ์ด ํ•„๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ๋“  ์กด์ค‘ํ•˜๊ณ  ์žˆ์Œ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค.

  • jsconfig.json ๋ชจ๋‘ ์ œ๊ฑฐํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๊ฐ€ ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ์ˆ˜์ค€(~350MB)์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋Ÿฐ ์‹์œผ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ฆฌ์„์€ 2GB์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ œ์™ธ ๋ฐฐ์—ด์— "__sapper__" ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋„ ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค(์ œ๊ฑฐํ•  ๋•Œ์™€ ๋™์ผ).

์ด์— ๋Œ€ํ•œ ๋‚˜์˜ ์ƒ๊ฐ:

  • SLS๊ฐ€ __sapper__ ํด๋”์— ์žˆ๋Š” .js ํŒŒ์ผ์˜ ์˜ํ–ฅ์„ ๋ฐ›๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? (๊ฐ™์€ ํŒŒ์ผ์„ __sapper__/dev/client ์— ๋ณต์‚ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐํ•ด๋„ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํŒŒ์ผ ์–‘์— ๋”ฐ๋ผ ๋‹จ์ˆœํžˆ ์„ ํ˜•์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.)
  • ์ด ๋ชจ๋“  ์†Œ๋ชจ๋œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ •๋ง ํ•„์š”ํ•œ๊ฐ€์š”?
  • jsconfig.json ๋Š” ์ •ํ™•ํžˆ SLS์— ์–ด๋–ค ์˜ํ–ฅ์„ ์ค๋‹ˆ๊นŒ?
  • ์•„๋งˆ๋„ jsconfig.json ์˜ ์‚ฌ์šฉ์„ ๋ฌธ์„œํ™”ํ•˜์—ฌ ์ œ์–ดํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋ฅผ ์กฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ผ์ข…์˜ ํ† ๋ก ๊ณผ ๋ฌธ์„œ ๊ฐœ์„ ์„ ๊ธฐ๋Œ€ํ•˜๊ณ  ์žˆ์ง€๋งŒ, ์ด ๋ฌธ์ œ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๋‹ซ์œผ์‹ญ์‹œ์˜ค.

bug documentation

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

์–ธ์–ด ์„œ๋ฒ„๋Š” ๋ฐฐํ›„์—์„œ typescript์˜ ์–ธ์–ด ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” typescript๊ฐ€ jsconfig.json ์— ํฌํ•จ๋˜๋„๋ก ๊ตฌ์„ฑ๋œ ๋ชจ๋“  ํŒŒ์ผ์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋†’๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. typescript ์–ธ์–ด ์„œ๋น„์Šค๋Š” svelte ์–ธ์–ด ์„œ๋ฒ„์™€ ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— typescript ์–ธ์–ด ์„œ๋น„์Šค์—์„œ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

__sapper__ ํด๋”์˜ ํฌ๊ธฐ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ํ”„๋กœ์ ํŠธ์—๋Š” jsconfig.json ์žˆ๊ณ  ์•ฝ 200๊ฐœ์˜ js ์†Œ์Šค ํŒŒ์ผ์„ ํฌํ•จํ•˜๊ณ  150MB๋งŒ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. __sapper__ ํด๋”๊ฐ€ ์–ด๋–ป๊ฒŒ ์–ธ์–ด ์„œ๋ฒ„๊ฐ€ 2GB ์ด์ƒ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•˜๋Š”์ง€ ์ƒ์ƒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ ๋‚ด ํ”„๋กœ์ ํŠธ์˜ ์ €์žฅ์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. b339c2a17e @ Innopoints/frontend

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ƒˆ๋กœ ๋ณต์ œํ•˜๊ณ  ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ–ˆ๊ณ  ๋‹ค์Œ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

  • __sapper__ ํด๋”์— dev ๋นŒ๋“œ๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ 490MB
  • __sapper__ ํด๋”์— ๊ฐœ๋ฐœ ๋ฐ ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ 730MB

์ด๋ฅผ ์žฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ง์ ‘ ์ปดํŒŒ์ผ์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ฐœ๋ฐœ ์„œ๋ฒ„๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์—†์ด ์‹คํ–‰๋˜์ง€ ์•Š์ง€๋งŒ ์–ด์จŒ๋“  ์ปดํŒŒ์ผ์€ ์„ฑ๊ณตํ•˜๋ฏ€๋กœ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค). Yarn์œผ๋กœ deps๋ฅผ ์„ค์น˜ํ•˜๊ณ  yarn dev ์ปดํŒŒ์ผํ•œ ๋‹ค์Œ VS Code์—์„œ .svelte ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค.

๋˜ํ•œ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค๋ฉด ์ผ๋ฐ˜ VS Code์™€ ๋‹ฌ๋ฆฌ VSCodium์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


.svelte ํŒŒ์ผ๋งŒ ์Šค์บ”ํ•˜๋„๋ก SLS๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? .js/.ts ํŒŒ์ผ์ด ์‹ค์ œ๋กœ Svelte ์ฝ”๋“œ ๋ถ„์„๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŠนํžˆ __sapper__ ํด๋”์™€ ๊ฐ™์ด ์ง์ ‘ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์€ ํด๋”.

๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด jsconfig.json ์—†์„ ๋•Œ SLS๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ํ•ด๋‹น ํŒŒ์ผ์„ ์ œ๊ฑฐํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ ์ ˆํ•œ 150MB๋กœ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  README์—์„œ ์–ธ๊ธ‰ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด TS ๋ฐฉ์‹์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์ €์—๊ฒŒ๋Š” ์ „ํ˜€ ๊ด€๋ จ์ด ์—†์–ด ๋ณด์ด๋Š” jsconfig.json ํŒŒ์ผ์ด ์ด๋ ‡๊ฒŒ ๊ทน์ ์ธ ์ฐจ์ด๋ฅผ ์ผ์œผํ‚ค๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋งค์šฐ ๋†€๋ผ์› ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์˜ˆ, ์ด์— ๋Œ€ํ•œ ๋ฌธ์„œ์— ๋ฌด์–ธ๊ฐ€๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

.ts / .js ํŒŒ์ผ์˜ ์Šค์บ”์€ svelte์—์„œ ์ด๋Ÿฌํ•œ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ธํ…”๋ฆฌ์„ผ์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํฌํ•จ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ž๋™ ์™„์„ฑ/์ •์˜๋กœ ์ด๋™/ํ˜ธ๋ฒ„ ์ •๋ณด๋ฅผ ์–ป์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

__sapper__ ํด๋”๊ฐ€ IntelliSense์— ๋ณ„๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง€๋ฏ€๋กœ ์ด ๋ฌด์‹œ๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์žฌ์ •์˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ์ตœ๋Œ€ 2GB์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์žˆ์ง€๋งŒ ์ถ”์ ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—์„œ Svelte ์†Œ์Šค๋ฅผ ํŽธ์ง‘ํ•˜๋Š” ๋™์•ˆ ๋ฌด์ž‘์œ„๋กœ ํญ๋ฐœํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋ฌด์—‡์„ ์ถ”์ฒœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์–ธ์–ด ์„œ๋ฒ„๋Š” svelte ํŒŒ์ผ์„ ๊ฐ์ง€ํ•˜๊ณ  ๊ฑฐ๊ธฐ์—์„œ ํŒŒ์ผ ํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ jsconfig/tsconfig์˜ ํ•ญ๋ชฉ์„ ์กด์ค‘ํ•ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ๊ฒฝํ—˜("๊พธ์ค€ํžˆ ์ฆ๊ฐ€"๊ฐ€ ์•„๋‹ˆ๋ผ "ํญ๋ฐœ")์— ๋”ฐ๋ฅด๋ฉด, ์ง€๊ธˆ ์ œ ์ƒ๊ฐ์—๋Š” ์„œ๋ฒ„๊ฐ€ ๊ทธ๊ฐ€ ํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š” ๊ด€๋ จ ์—†๋Š” ํŒŒ์ผ์„ ๋กœ๋“œํ•˜๋Š” ์ง€์ ์— ๋„๋‹ฌํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
VSCode์˜ Output->Svelte๋ฅผ ์‚ดํŽด๋ณด๊ณ  ์˜์‹ฌ์Šค๋Ÿฌ์šด ๊ฒƒ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋˜๋Š” ์—ฌ๊ธฐ์— ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ).

์˜ค๋Š˜์€ ์ž‘๋™ํ•˜์ง€๋งŒ ์–ด์ œ VS Code๋ฅผ ๋‹ซ์€ ํ›„(SIGTERM์— ์‘๋‹ตํ•˜์ง€ ์•Š์Œ) ๋ฉ‹์ง„ ์–ธ์–ด ๋„๊ตฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ข…๋ฃŒํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ ๋” ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด ์—†์Šต๋‹ˆ๋‹ค.

์–ผ๋งˆ๋‚˜ ํฐ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๊นŒ? tsconfig.json ๋˜๋Š” jsconfig.json ์žˆ์Šต๋‹ˆ๊นŒ?

@dummdidumm sapper ํ…œํ”Œ๋ฆฟ๋ณด๋‹ค

{
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules/*"
  ],
  "compilerOptions": {
    "target": "es2015",
    "module": "es2015",
    "types": [
      "svelte"
    ]
  }
}

๋”ฐ๋ผ์„œ ๋‹น์‹ ๊ณผ @illright ๋Š” ๋ชจ๋‘

@dummdidumm ์–ด๋–ค ์‹์œผ๋กœ๋“  ์กฐ์‚ฌ์— ๋„์›€์ด ๋œ๋‹ค๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”. ๋ช…๋ น์ค„์ด๋‚˜ ํŽธ์ง‘๊ธฐ์—์„œ ๋งŒ์ง€์ž‘๊ฑฐ๋ฆฌ๋Š” ๊ฒƒ๋ณด๋‹ค ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ๋‹ค๋ฅธ ๊ฒƒ์„ ํ†ตํ•ด SLS๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

Svelte (Svelte Language Server) stderr FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
Svelte (Svelte Language Server) stderr  1: 0x55d7276c33b6 node::Abort() [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) stderr  2: 0x55d7276c3985  [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) stderr  3: 0x55d723b01817  [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) stderr  4: 0x55d723b017b4  [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) stderr  5: 0x55d723b6f716  [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) stderr  6: 0x55d723b6e538  [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) stderr  7: 0x55d723b6b626 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) stderr  8: 0x55d723b7678e  [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) stderr  9: 0x55d723f210b7 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) stderr 10: 0x55d72410e1be  [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) stderr 11: 0x55d72440b62b  [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) rpc.onClose The RPC connection closed unexpectedly

์ง€๊ธˆ ๋‚˜๋Š” ๋‹ค์‹œ 2.1GB์— ๋„๋‹ฌํ–ˆ๊ณ  SLS๋ฅผ SIGKILLํ–ˆ์Šต๋‹ˆ๋‹ค. ์œ„์˜ ๋‚ด์šฉ์€ Atom์˜ DevTools์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค ์ž ๊น, ๋‹น์‹ ์€ Atom์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์–ด๋–ค ํ™•์žฅ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

@dummdidumm ์ €๋Š” Atom( ide-svelte , ์–ธ์–ด ์„œ๋ฒ„ ๋ฒ„์ „ ์ˆ˜๋™ ๋ฒ”ํ”„)๊ณผ VSCodium(Svelte Beta ํฌํ•จ)์„ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์€ ํญ๋ฐœ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

ํญ๋ฐœ์€ ์‹œ์ž‘ ์งํ›„์— ๋ฐœ์ƒํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ์—์„œ ํ™•์žฅ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ฝ๊ฐ„์˜ ์กฐ์‚ฌ๋ฅผ ํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค! VSCode(ium, ๋™์ผํ•ด์•ผ ํ•จ)์— ๋Œ€ํ•ด ๋กœ์ปฌ๋กœ ํ™•์žฅ์„ ์„ค์ •ํ•˜๋ ค๋ฉด ๋จผ์ € ์ œ๊ฑฐํ•œ ๋‹ค์Œ ์—ฌ๊ธฐ์— ์„ค๋ช…๋œ ๋Œ€๋กœ ๋กœ์ปฌ๋กœ ์„ค์ • ์„œ๋น„์Šค ์ž…๋‹ˆ๋‹ค. ๋‚ด ์ƒ๊ฐ์— ์–ด๋Š ์‹œ์ ์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋„ˆ๋ฌด ๋งŽ์€ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๋ณผ ์ˆ˜ setInterval(() => console.log(JSON.stringify(Array.from(new Set([...files, ...snapshotManager.getFileNames(), ...svelteTsxFiles]), null , 3)), 10000) ์™€ ๊ฐ™์ด 10์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ) ํ†ต์ฐฐ๋ ฅ์„ ์–ป๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ snapshotManager.getFileNames() ์—๋Š” jsconfig.json ์— ๋”ฐ๋ผ ๊ฐ์‹œ๋˜์–ด์„œ๋Š” ์•ˆ ๋˜๋Š” ๋งŽ์€ ํŒŒ์ผ์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋นŒ๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๊นŒ์ง€ Sapper์—์„œ ์•„๋ฌด ๊ฒƒ๋„ ๋กœ๋“œํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์—์„œ ํŒŒ์ผ ๋ณ€๊ฒฝ์— ์‘๋‹ตํ•˜์ง€๋งŒ ๊ทธ ์ดํ›„๋กœ๋Š” __sapper__/**/*.js ํŒŒ์ผ์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฑ„์›๋‹ˆ๋‹ค.

์ข‹์•„์š”, ๊ทธ๊ฒŒ ๋ฌธ์ œ์˜ ์›์ธ์ธ ๊ฒƒ ๊ฐ™์•„์š”. ๋ชจ๋“  ์ƒˆ ํŒŒ์ผ์ด ์ถ”์  ๋ชฉ๋ก์— ์ถ”๊ฐ€๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ํญ๋ฐœ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋„ค, ์•„๋งˆ ๊ทธ๋Ÿด ๊ฒ๋‹ˆ๋‹ค. TypescriptPlugin์ด ts/js-onWatchedFilesChange๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์กฐ์ •ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ vetur๊ฐ€ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํ•˜๊ณ  ์ƒˆ ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ  ์˜ค๋ž˜๋œ ํ•ญ๋ชฉ๋งŒ ์‚ญ์ œํ•˜์‹ญ์‹œ์˜ค. ๋˜๋Š” ๋ฌด์‹œํ•ด์•ผ ํ•˜๋Š” __sapper__ / node_modules / dist ์™€ ๊ฐ™์€ ์ตœ์ƒ์˜ ์ถ”์ธก ๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•  ๊ฒƒ์ด๋‹ค.

์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ ๋  ๋•Œ๊นŒ์ง€ ๋Œ€ํ•œ ๋”์ฐํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• : ์—ด์–ด ๋ฒจํ…Œ ํ™•์žฅ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ฐพ์„ ์ˆ˜ node_modules/svelte-language-server/dist/src/plugins/typescript/service.js ๋ฐ ์•„์›ƒ ์ฃผ์„ snapshotManager.getFileNames() :

69ํ–‰:

// before:
return Array.from(new Set(__spreadArrays(files, snapshotManager.getFileNames(), svelteTsxFiles)));

// after:
return Array.from(new Set(__spreadArrays(files/*, snapshotManager.getFileNames() */, svelteTsxFiles)));

์ผ๋ถ€ IntelliSense๋Š” ์†์‹ค๋˜์ง€๋งŒ ๊ตฌ๋ฌธ ๊ฐ•์กฐ ํ‘œ์‹œ๋Š” ์œ ์ง€๋˜๊ณ  ์ตœ์†Œํ•œ ์„ฑ๋Šฅ์€ ๋ฌด์ž‘์œ„๋กœ ๋–จ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์ด ์ €์™€ ๊ฐ™์€ ์‚ฌ๋žŒ์ด๋ผ๋ฉด ์ถฉ๋ถ„ํžˆ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. :)

@illright๊ฐ€ ๋งํ•œ ๊ฒƒ์„ ๋ณด์™„ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ Windows์˜ ~/.vscode/extensions ๋˜๋Š” %userprofile%\.vscode \extensions\ ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ node_modules/svelte-language-server/dist/src/plugins/typescript/TypeScriptPlugin.js
onWatchFileChanges ์‹œ์ž‘ํ•˜๋Š” 237ํ–‰์— ๋‹ค์Œ ํ–‰์„ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

        if (/node_modules|__sapper__|dist/.test(fileName)) {
            return;
        }

์ด ๋ฐฉ๋ฒ•์ด ๋ฌธ์ œ์˜ ์›์ธ

PR #165๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋””๋ฒ„๊ทธ ์—์„œ ์‹œ๋„ํ•ด๋ณด๊ณ  ๊ฐœ์„ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@jasonlyu123 ์˜ˆ, ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ž ์‹œ ๋™์•ˆ ๋‚ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ์ง€์ž‘๊ฑฐ๋ฆฌ๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋ฅผ ํ†ต์ œํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. Sapper ์žฌ๊ตฌ์ถ•๋„ ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„ํ”Œ๋กœ๋ฅผ ์œ ๋ฐœํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ : ์ œ์–ด ์ƒํƒœ๋กœ ์œ ์ง€ = ์ตœ๋Œ€ ~480MB. ์ด๊ฒƒ์€ ๋‚ด ์‹œ์Šคํ…œ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ๋‚ฎ์ง€๋งŒ ์—ฌ์ „ํžˆ ์ด ๋†’์€ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋Ÿ‰์œผ๋กœ ๊ฐ„์ฃผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์ปดํ“จํ„ฐ์— 8GB์˜ RAM์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณ ํ†ต์€ ์ง„์งœ ๐Ÿ˜ญ

Screen Shot 2020-06-11 at 8 17 22 am

๊ธฐ๋ณธ์ ์œผ๋กœ __sapper__ ๋ฅผ ์ œ์™ธํ•˜๋”๋ผ๋„ tsconfig.json/jsconfig.json ์ œ์™ธ ํ•ญ๋ชฉ์— __sapper__ ๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ ๊ณ ์œ ์˜ typescript ๋ฒˆ๋“ค์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. vscode์—์„œ ์‚ฌ์šฉํ•˜๋Š” tsserver๋Š” ์—ฌ์ „ํžˆ ๊ทธ๊ฒƒ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@illright ์ตœ์‹  ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฒ„์ „์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ง€๊ธˆ์€ ๋” ์ข‹์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

@orta ๋Š” Atom ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ด ์ €์žฅ์†Œ๋กœ ์˜ฎ๊ธฐ๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. ์ด ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ์–ธ์–ด ์„œ๋ฒ„์˜ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@rob-balfre ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰๋„ ์ค„์–ด๋“ค์—ˆ๋‚˜์š”? ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์„ค์ •์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ์—ˆ๊ณ  typescript ์ „์ฒ˜๋ฆฌ๊ธฐ์— transpileOnly๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ƒํ™ฉ์ด ํฌ๊ฒŒ ๊ฐœ์„ ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
svelte.config.js์—์„œ
```
const sveltePreprocess = require("svelte-preprocess");

module.exports = {
์ „์ฒ˜๋ฆฌ: sveltePreprocess({
ํƒ€์ดํ”„์Šคํฌ๋ฆฝํŠธ: {
transpileOnly: ์‚ฌ์‹ค,
},
}),
// ...๊ธฐํƒ€ ๊ฐ€๋Š๋‹ค๋ž€ ์˜ต์…˜(์„ ํƒ ์‚ฌํ•ญ)
};

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

Svelte ํŒŒ์ผ์„ ์ €์žฅํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰/์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅธ์ชฝ ํ•˜๋‹จ์— ๋‹ค์Œ ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ๊ทธ๋ƒฅ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.

Screen Shot 2020-06-16 at 9 46 46 PM

๋‹ค์Œ์€ Svelte ์ถœ๋ ฅ ์ฐฝ์ž…๋‹ˆ๋‹ค.

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 0x1143fdbe5 node::Abort() [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 2: 0x1143fdc54 node::Abort() [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 3: 0x11010b237 v8::internal::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 4: 0x11010b1d7 v8::internal::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 5: 0x1101500a5 v8::internal::Heap::StartIdleIncrementalMarking(v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 6: 0x110151719 v8::internal::Heap::StartIdleIncrementalMarking(v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 7: 0x11014e3ec v8::internal::Heap::CreateFillerObjectAt(unsigned long, int, v8::internal::ClearRecordedSlots, v8::internal::ClearFreedMemoryMode) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 8: 0x11014c002 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 9: 0x11015746a v8::internal::Heap::PromotedExternalMemorySize() [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
10: 0x110157851 v8::internal::Heap::PromotedExternalMemorySize() [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
11: 0x110358a5a v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationType, v8::internal::AllocationOrigin) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
12: 0x1105e19bf v8::internal::RegExp::CompileForTesting(v8::internal::Isolate*, v8::internal::Zone*, v8::internal::RegExpCompileData*, v8::base::Flags<v8::internal::JSRegExp::Flag, int>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, bool) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
13: 0x110c23139 v8::internal::compiler::ZoneStats::ReturnZone(v8::internal::Zone*) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
14: 0x110bf293d v8::internal::compiler::ZoneStats::ReturnZone(v8::internal::Zone*) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]

<--- Last few GCs --->
al[45813:0x7fe18e004200]    47201 ms: Mark-sweep 4095.0 (4102.8) -> 4094.4 (4103.3) MB, 2004.1 / 0.0 ms  (+ 6.4 ms in 18 steps since start of marking, biggest step 5.3 ms, walltime since start of marking 2020 ms) (average mu = 0.146, current mu = 0.005) all[45813:0x7fe18e004200]    50534 ms: Mark-sweep 4095.7 (4103.3) -> 4095.3 (4104.5) MB, 2648.3 / 0.0 ms  (+ 668.5 ms in 21 steps since start of marking, biggest step 50.7 ms, walltime since start of marking 3332 ms) (average mu = 0.063, current mu = 0.005) 

<--- JS stacktrace --->

==== JS stack trace =========================================

    0: ExitFrame [pc: 0x110c23139]
Security context: 0x287bc74e0dd1 <JSObject>
    1: keys [0x287bc74c15b1](this=0x287bcb9bfaa1 <Object map = 0x287be02c4cb9>,0x287bc68e8e29 <Object map = 0x287bcfd3aa99>)
    2: uvException(aka uvException) [0x287b27f974e1] [internal/errors.js:374] [bytecode=0x287b18cb32e9 offset=424](this=0x287bb6f004b1 <undefined>,0x287bc68e8e29 <Object map = 0x287bcfd3aa99>)
    3: handleErrorFromBinding(aka handleError...

[Info  - 9:59:17 PM] Connection to server got closed. Server will restart.
[Error - 9:59:17 PM] Request textDocument/formatting failed.
Error: Connection got disposed.
    at Object.dispose (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/main.js:904:25)
    at Object.dispose (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-languageclient/lib/client.js:74:35)
    at LanguageClient.handleConnectionClosed (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-languageclient/lib/client.js:2309:42)
    at LanguageClient.handleConnectionClosed (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-languageclient/lib/main.js:155:15)
    at closeHandler (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-languageclient/lib/client.js:2296:18)
    at CallbackList.invoke (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/events.js:62:39)
    at Emitter.fire (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/events.js:121:36)
    at closeHandler (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/main.js:240:26)
    at CallbackList.invoke (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/events.js:62:39)
    at Emitter.fire (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/events.js:121:36)
    at IPCMessageReader.fireClose (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/messageReader.js:111:27)
    at ChildProcess.<anonymous> (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/messageReader.js:213:45)
    at ChildProcess.emit (events.js:208:15)
    at ChildProcess.EventEmitter.emit (domain.js:476:20)
    at maybeClose (internal/child_process.js:1021:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5)
[Error - 9:59:17 PM] Request textDocument/hover failed.
Error: Connection got disposed.
    at Object.dispose (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/main.js:904:25)
    at Object.dispose (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-languageclient/lib/client.js:74:35)
    at LanguageClient.handleConnectionClosed (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-languageclient/lib/client.js:2309:42)
    at LanguageClient.handleConnectionClosed (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-languageclient/lib/main.js:155:15)
    at closeHandler (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-languageclient/lib/client.js:2296:18)
    at CallbackList.invoke (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/events.js:62:39)
    at Emitter.fire (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/events.js:121:36)
    at closeHandler (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/main.js:240:26)
    at CallbackList.invoke (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/events.js:62:39)
    at Emitter.fire (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/events.js:121:36)
    at IPCMessageReader.fireClose (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/messageReader.js:111:27)
    at ChildProcess.<anonymous> (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/messageReader.js:213:45)
    at ChildProcess.emit (events.js:208:15)
    at ChildProcess.EventEmitter.emit (domain.js:476:20)
    at maybeClose (internal/child_process.js:1021:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5)
Initialize language server at  Code/Project
Trying to load config for Code/Project/src/App.svelte
Initialize new ts service at  

์ด๊ฒƒ์€ ๋‹ค๋ฅธ ํŒŒ์ผ(.js ๋“ฑ)์„ ์ €์žฅํ•˜๋Š” ์ด ๋” ํฐ Svelte ํ”„๋กœ์ ํŠธ์—์„œ๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Svelte Beta๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ž…๋‹ˆ๋‹ค(์ง€๊ธˆ์€ Svelte ํŒŒ์ผ์ด ์ธ์‹๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•˜์ง€๋งŒ ์ด๊ฒƒ์ด ๊ด€๋ จ์ด ์—†๋‹ค๋ฉด ์ ˆ๋Œ€์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”!

์ •๋ณด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฒ”์œ„๋ฅผ ์ขํžˆ๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์ด ๋” ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์–ผ๋งˆ๋‚˜ ๋งŽ์€ svelte/js ํŒŒ์ผ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?
  • ํ”„๋กœ์ ํŠธ๋ฅผ ์ž‘์—…ํ•œ ๋ช‡ ์ดˆ/๋ถ„ ํ›„์— ๋ฐ”๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚œ ํ›„์—๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ?
  • svelte.plugin.svelte.format.enable ๋ฅผ false (https://github.com/sveltejs/language-tools/tree/master/packages/svelte-vscode#sveltepluginsvelteformatenable)๋กœ ์„ค์ •ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์ถœ๋ ฅ์— ๊ด€๊ณ„์—†์ด ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฅ˜๊ฐ€ ํฉ์–ด์ ธ ์žˆ์Šต๋‹ˆ๊นŒ?
  • tsconfig.json ๋˜๋Š” jsconfig.json ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ•˜๋‚˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ(๋‹จ์ˆœํ•œ ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Œ)?

์•ˆ๋…•ํ•˜์„ธ์š” @dummdidumm ๋น ๋ฅธ ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ฒซ์งธ - ์˜ค๋Š˜ ์•„์นจ์— ๊ท€ํ•˜์˜ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ์ž๋ฃŒ๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค... ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ํ—ˆ๊ณต์— ์‚ฌ๋ผ์ง„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ถŒ์œ„ ์žˆ๋Š”.

๋‹ค์Œ์€ ํ›„์†์„ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ๋‹ต๋ณ€์ž…๋‹ˆ๋‹ค.

์–ผ๋งˆ๋‚˜ ๋งŽ์€ svelte/js ํŒŒ์ผ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

  • ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ(<10๊ฐœ ํŒŒ์ผ): <10์ดˆ ๋™์•ˆ ์ž‘์€ "Running Svelte Beta" ์ฐฝ์ด ๋‚˜ํƒ€๋‚˜๋ฉฐ, ํŒŒ์ผ ์ €์žฅ ๋ฐ ํ˜•์‹์ด ์ง€์ •๋ฉ๋‹ˆ๋‹ค.
  • ๋” ํฐ ํ”„๋กœ์ ํŠธ(>10๊ฐœ ํŒŒ์ผ): ์—ฌ๊ธฐ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์™ผ์ชฝ ํ•˜๋‹จ์— ํ•ด๋‹น ์ฐฝ์ด ๋œจ๊ณ  ์•ฝ 20~30์ดˆ ๋™์•ˆ ์‹œ๋„ํ•˜๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์นดํ’‹.

ํ”„๋กœ์ ํŠธ๋ฅผ ์ž‘์—…ํ•œ ๋ช‡ ์ดˆ/๋ถ„ ํ›„์— ๋ฐ”๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚œ ํ›„์—๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ?
์ง€๊ธˆ๊นŒ์ง€๋Š” ์ฆ‰์‹œ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ์—ด๊ณ , ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•˜๊ณ , ์ €์žฅํ•˜๋ฉด ์œ„์™€ ๊ฐ™์€ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์–ด์ œ(๋˜๋Š” ๊ทธ ์ „๋‚ ) VSCode ์—…๋ฐ์ดํŠธ ํ›„์—์•ผ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. Svelte Beta๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ด์ „ ํ™•์žฅ์ž๋ณด๋‹ค ์ €์žฅ ์†๋„๊ฐ€ ๋Š๋ ธ์ง€๋งŒ(ํฌ๋งท ๋ฐ ์ €์žฅ์ด ๋ฐœ์ƒํ•˜๊ธฐ ์•ฝ 2-4์ดˆ ์ „), ๊ทธ๊ฒƒ์ด ์œ ์šฉํ•˜๋‹ค๋ฉด.

svelte.plugin.svelte.format.enable์„ false(https://github.com/sveltejs/language-tools/tree/master/packages/svelte-vscode#sveltepluginsvelteformatenable)๋กœ ์„ค์ •ํ•ด๋„ ์˜ค๋ฅ˜๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•˜๋‚˜์š”?
๋‹ค์Œ์— ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋ฉด ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์‰ฝ๊ฒŒ๋„ ์ง€๊ธˆ ๋ง‰ ๊ฐ‘์ž๊ธฐ ๋ฉˆ์ถฐ์„œ ๋ณ„ ์†Œ์šฉ์ด ์—†์„ ๊ฒƒ ๊ฐ™์•„์š” ํ—คํ—ค.

tsconfig.json ๋˜๋Š” jsconfig.json์ด ์žˆ์Šต๋‹ˆ๊นŒ?
๋‚ด ํ”„๋กœ์ ํŠธ์— .tsconfig ๋˜๋Š” .jsconfig ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ณต์œ ํ•  ๊ฐ„๋‹จํ•œ ์„ค์ •์ด ์žˆ์œผ๋ฉด ๋‹ค์Œ์—๋„ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ, ๊ทธ๊ฒƒ์ด ์‚ฌ๋ผ์ง„ ๊ฒƒ์€ ๋งŒ์„ธ์ง€๋งŒ, ์ง€๊ธˆ ์šฐ๋ฆฌ๊ฐ€ ๋ฌธ์ œ๋ฅผ ๋ชจ๋ฅธ๋‹ค๋ฉด ์  ์žฅ, ํžˆํžˆ.

ํด๋ž˜์‹ ๐Ÿ˜„

jsconfig.json / tsconfig.json ์งˆ๋ฌธ์„ ํ•œ ์ด์œ ๋Š” ์ด์ „์— ์–ธ์–ด ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘ ์‹œ ํŒŒ์ผ ํŠธ๋ฆฌ(์™ธ๋ถ€ ํ”„๋กœ์ ํŠธ ํด๋”)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  - ์ง€๊ธˆ๊นŒ์ง€๋Š” ์ˆ˜์ •ํ•ด์•ผ ํ•˜์ง€๋งŒ.

์‹œ์ž‘ ์‹œ์™€ ์ดํ›„ ๋งค๋ถ„ ๋กœ๋“œ๋œ ํŒŒ์ผ ์ˆ˜๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ ๋กœ๊น…์„ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ข‹์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค! ์ €๋Š” ์ง€๊ธˆ 10๊ฐœ ์ด์ƒ์˜ ํŒŒ์ผ ํ”„๋กœ์ ํŠธ ์ค‘ ํ•˜๋‚˜์—์„œ ๋†€๊ณ  ์žˆ์œผ๋ฉฐ ๋ชจ๋“  ๊ฒƒ์ด ์—ฌ์ „ํžˆ ์ˆœ์กฐ๋กญ๊ฒŒ ์ง„ํ–‰๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค...

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

@dummdidumm Atom ํ™•์žฅ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด์— ๋Œ€ํ•œ ์ •๋ณด์™€ ์ง„ํ–‰ ์ƒํ™ฉ์€ #70์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

VSCode ๊ฐ์‹œ์ž์—์„œ __sapper__ ๋ฅผ ์ œ์™ธํ•˜๋ฉด ํ™•์žฅ์ด ์ค‘์ง€๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

image

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