์ด๊ฒ์ ์ฃผ์๊ฐ ํ์ํ๋ค๊ณ ์๊ฐ๋๋ Svelte Language Server(SLS)์ ๋ํ ๋ด ๊ฒฝํ์ ๋ํ ์ผ์ข ์ ๋ฌธ์์ ๋๋ค.
์ ๋นํ ํฐ Svelte ํ๋ก์ ํธ์์ Svelte Atom ํ์ฅ์ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๋ช ๋ถ์ ์ฝ๋ฉ ํ์ ์ฌ๊ฐํ ์ฑ๋ฅ ์ ํ์ ์์คํ
์ ์ง๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค. SLS ํ๋ก์ธ์ค๊ฐ ์ต๋ 2GB์ RAM์ ์ฌ์ฉํ๊ณ ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ํ๋ก์ ํธ๋ฅผ ๋ถ๋ฆฌํ ํ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ง์ ํ์ผ์ด /jsconfig.json
๋ฐ /__sapper__/*
์์ ๋ฐ๊ฒฌํ์ต๋๋ค. ๊ฐ๋ฐ ๋น๋์ ํ๋ก๋์
๋น๋๋ฅผ ๋ชจ๋ ์ปดํ์ผํ์ ๋ __sapper__
ํด๋ ํฌ๊ธฐ๊ฐ ๋ ๋ฐฐ์์ต๋๋ค.
jsconfig.json
์๋ ํนํ ํฅ๋ฏธ๋ก์ด ํ๋๊ฐ ์์์ต๋๋ค.
{
"exclude": ["node_modules", "dist"]
}
SLS๊ฐ ๋ค์๊ณผ ๊ฐ์ ์ ์์ ์ด ํ๋๋ฅผ ์ด๋ป๊ฒ๋ ์กด์คํ๊ณ ์์์ด ๋ฐํ์ก์ต๋๋ค.
jsconfig.json
๋ชจ๋ ์ ๊ฑฐํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์๋น๊ฐ ํ์ฉ ๊ฐ๋ฅํ ์์ค(~350MB)์ด ๋์์ต๋๋ค."__sapper__"
๋ฅผ ์ถ๊ฐํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์๋น๋ ํ์ฉ ๊ฐ๋ฅํฉ๋๋ค(์ ๊ฑฐํ ๋์ ๋์ผ).์ด์ ๋ํ ๋์ ์๊ฐ:
__sapper__
ํด๋์ ์๋ .js
ํ์ผ์ ์ํฅ์ ๋ฐ๋ ์ด์ ๋ ๋ฌด์์
๋๊น? (๊ฐ์ ํ์ผ์ __sapper__/dev/client
์ ๋ณต์ฌ ๋ถ์ฌ๋ฃ๊ธฐํด๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ฆ๊ฐํ์ง ์์ผ๋ฏ๋ก ํ์ผ ์์ ๋ฐ๋ผ ๋จ์ํ ์ ํ์ ์ผ๋ก ์ฆ๊ฐํ๋ ๊ฒ์ด ์๋๋๋ค.)jsconfig.json
๋ ์ ํํ SLS์ ์ด๋ค ์ํฅ์ ์ค๋๊น?jsconfig.json
์ ์ฌ์ฉ์ ๋ฌธ์ํํ์ฌ ์ ์ดํ ์ ์๋ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ์๋น๋ฅผ ์กฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ ๋ช
ํํ๊ฒ ํด์ผ ํฉ๋๋ค.์ด ๋ฌธ์ ์ ๋ํด ์ด๋ป๊ฒ ํด์ผํ ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ผ์ข ์ ํ ๋ก ๊ณผ ๋ฌธ์ ๊ฐ์ ์ ๊ธฐ๋ํ๊ณ ์์ง๋ง, ์ด ๋ฌธ์ ๋ฅผ ์์ ๋กญ๊ฒ ๋ซ์ผ์ญ์์ค.
์ธ์ด ์๋ฒ๋ ๋ฐฐํ์์ 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์ด ์์ต๋๋ค.
๊ณ ํต์ ์ง์ง ๐ญ
๊ธฐ๋ณธ์ ์ผ๋ก __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 ํ์ผ์ ์ ์ฅํ ๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋/์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ค๋ฅธ์ชฝ ํ๋จ์ ๋ค์ ๋ฉ์์ง์ ํจ๊ป ๊ทธ๋ฅ ๋ฉ์ถฅ๋๋ค.
๋ค์์ 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.plugin.svelte.format.enable
๋ฅผ false
(https://github.com/sveltejs/language-tools/tree/master/packages/svelte-vscode#sveltepluginsvelteformatenable)๋ก ์ค์ ํ๋ฉด ์ค๋ฅ๊ฐ ๊ณ์ ๋ฐ์ํฉ๋๊น? ์๋๋ฉด ์ถ๋ ฅ์ ๊ด๊ณ์์ด ๋ฉ๋ชจ๋ฆฌ ์ค๋ฅ๊ฐ ํฉ์ด์ ธ ์์ต๋๊น?tsconfig.json
๋๋ jsconfig.json
์์ต๋๊น? ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ํ๋๋ฅผ ์ถ๊ฐํ๋ฉด ์ด๋ป๊ฒ ๋ฉ๋๊น(๋จ์ํ ๊ฒ์ผ ์ ์์)?์๋ ํ์ธ์ @dummdidumm ๋น ๋ฅธ ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค!
์ฒซ์งธ - ์ค๋ ์์นจ์ ๊ทํ์ ์ง๋ฌธ์ ๋ํ ํ ์คํธ๋ฅผ ์คํํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ์๋ฃ๋ฅผ ์ด์์ต๋๋ค... ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ํ๊ณต์ ์ฌ๋ผ์ง ๊ฒ ๊ฐ์ต๋๋ค. ๊ถ์ ์๋.
๋ค์์ ํ์์ ์ํ ๋ช ๊ฐ์ง ๋ต๋ณ์ ๋๋ค.
์ผ๋ง๋ ๋ง์ svelte/js ํ์ผ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๊น?
ํ๋ก์ ํธ๋ฅผ ์์
ํ ๋ช ์ด/๋ถ ํ์ ๋ฐ๋ก ๋ฐ์ํฉ๋๊น, ์๋๋ฉด ์ผ์ ์๊ฐ์ด ์ง๋ ํ์๋ง ๋ฐ์ํฉ๋๊น?
์ง๊ธ๊น์ง๋ ์ฆ์์
๋๋ค. ํ๋ก์ ํธ๋ฅผ ์ด๊ณ , ํ์ผ์ ๋ณ๊ฒฝํ๊ณ , ์ ์ฅํ๋ฉด ์์ ๊ฐ์ ์ํฉ์ด ๋ฐ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ (๋๋ ๊ทธ ์ ๋ ) 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__
๋ฅผ ์ ์ธํ๋ฉด ํ์ฅ์ด ์ค์ง๋์ด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํด์ก์ต๋๋ค.