jsconfig.json์ ์ฌ๊ธฐ์ ๊ธฐ์ ๋ฐ๋ผ์ฐ๊ธด ํ์๋๋ฐ ์ด๋ค ์ญํ ์ ํ๋ file์ธ์ง ์ง๊ณ ๋์ด๊ฐ๊ณ ์ถ์ด ์์๋ณด๋ ค ํ๋ค.
jsconfig.json ํ์ผ์ ์ฌ์ฉํ๋ ์ด์ ๊ฐ ๋ญ๊น?
ํ๋ก์ ํธ ๋๋ ํฐ๋ฆฌ ๋ฃจํธ์ jsconfig.json์ ์์ฑํจ์ผ๋ก์จ ํด๋น ํ๋ก์ ํธ๊ฐ js ๊ด๋ จ ํ๋ก์ ํธ๋ผ๋ ๊ฒ์ ์๋ ค์ค ์ ์๋ค.
๋ง์ฝ jsconfig.json ํ์ผ์ด ์๋ค๋ฉด ์๋ก ๋ค๋ฅธ ๊ฐ๊ฐ์ ํ์ผ์ ๊ฐ์ ํ๋ก์ ํธ(project context)๋ฅผ ์ฐธ์กฐํ๊ณ ์์ง ์๋๋ค.
๋ฐ๋ผ์ ํด๋น ํ์ผ์ ์ฒ๋ฆฌํ๊ณ ํด์ํ๋๋ฐ ๊ฒฝ์ฐ์ ๋ฐ๋ผ์ ์ฐจ์ด๊ฐ ์์ ์ ์๋ค.
๋ํ ํ๋ก์ ํธ์ ํฌํจํ ํ์ผ, ์ ์ธํ ํ์ผ, ์ปดํ์ผ ์ต์ ๋ ์ค์ ํ ์ ์๋ค.
jsconfig.json์ ์์น๋ ๋ค์๊ณผ ๊ฐ์ด ํ๋ก์ ํธ root ์์น์ ์์ด์ผํ๋ค.
์ฌ๋ฌ ํ๋ก์ ํธ๋ก ๊ตฌ์ฑํด์ผํ๋ ํ๋ก์ ํธ๋ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด๋ ๊ตฌ์ฑํ ์๋ ์๋ค.
์ด๋ ๊ฒ ์ง์ ํ์์ ๋ ๊ฐ๊ฐ์ config์ต์ ์ ๊ฐ์ง ์ ์๋ค.
exclude ์ต์ ์ ํ๋ก์ ํธ๋ด์์ ์ ์ธํ ํ์ผ๋ช ์ ์ง์ ํด์ค ์ ์๋ ์ต์ ์ด๋ค.
{
"compilerOptions": {
"module": "commonjs",
"target": "es6"
},
"exclude": ["node_modules"]
}
ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ํฌ๋ค๋ฉด ์ฑ๋ฅ(intellisense)์ด ๋ฎ์์ง ์ ์๋๋ฐ ์ด ๋ ๋ด๊ฐ ์ค์ง์ ์ผ๋ก ์ฌ์ฉํ์ง ์๋ ํ์ผ๋ค์ ์ ์ธํด์ค ์ ์๋ค.
๋ฐ๋๋ก include์ต์
์ ํฌํจํ ํ์ผ๋ค์ ๋ช
์ํด์ค๋ค.
default๊ฐ์ผ๋ก ๋ชจ๋ ํ์ผ์ ํฌํจํ๋๋ก ์ค์ ๋์ด์๋ค.
ํ์ง๋ง ์๋์ฒ๋ผ ๋ช ์ํด์ค๋ค๋ฉด ํ๋ก์ ํธ์ ํด๋น ํ์ผ๋ง ํฌํจํ๋๋ก ์ค์ ์ด ๋๋ค.
{
"compilerOptions": {
"module": "commonjs",
"target": "es6"
},
"include": ["src/**/*"]
}
์ฌ๋ฌ ๊ฐ์ง ์ปดํ์ผ ์ต์ ์ ์ค์ ํ ์ ์๋ ์ต์ ์ด๋ค.
์ฃผ์์ต์ ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"baseUrl":".",
"paths":{
"@app/*": ["app/*"]
}
}
}
target | ์ฌ์ฉํ javascript ๋ฌธ๋ฒ ๋ฒ์ ์ ์ ํํ ์ ์๋ค.
์ ํ ์ต์
์ ๋ค์๊ณผ ๊ฐ๋ค.
"es3", "es5", "es6", "es2015", "es2016", "es2017", "es2018", "es2019", "es2020", "esnext"
module | module system์ ๋ช
์ํด์ค๋ค.
์ ํ ์ต์
์ ๋ค์๊ณผ ๊ฐ๋ค.
amd", "commonJS", "es2015", "es6", "esnext", "none", "system", "umd"
์ฃผ๋ก ์ฌ์ฉ๋๋ ๊ฒ์ด es6๋ commonJS์ผํ ๋ฐ commonJS๋ ๋ ธ๋์์ ์ฌ์ฉ๋ ๋ ์ง์ ๋๋ ์ต์ ์ด๋ค.
baseURL | ํ๋ก์ ํธ์ ๋ฒ ์ด์ค ๊ฒฝ๋ก๋ฅผ ์ง์ ํด์ค ์ ์๋ค.
๊ฒฝ๋ก๊ฐ ๋ณต์กํ ๊ฒฝ์ฐ, ํน์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ์ฌ ํธ๋ฆฌํ๊ฒ ์๋๊ฒฝ๋ก๋ฅผ ์ง์ ํด์ค ์ ์๊ฒ ๋ค
paths | baseURL์ ๊ธฐ์ค์ผ๋ก, ํ์ผ์ ๋ถ๋ฌ์ฌ ๋ ๊ธฐ์ค์ ์ ์ค์ ํ ์ ์๋ ์ต์ ์ด๋ค.
์ดํด๊ฐ ์ ์๋๋ ๋ค์ ์์๋ฅผ ์ดํด๋ณด์.
"compilerOptions": {
"baseUrl": "src", // This must be specified if "paths" is.
...
"paths": {
"@app/*": ["app/*"], // @๋ ์ ๋ถ์ฌ์ค๋ ๋จ.
"@config/*": ["app/_config/*"],
"@environment/*": ["environments/*"],
"@shared/*": ["app/_shared/*"],
"@helpers/*": ["helpers/*"]
},
...
๊ธฐ๋ณธ ๊ฒฝ๋ก๋ฅผ src ํด๋๋ก ์ค์ ์ ํ ๋ค์ paths์ ๊ฒฝ๋ก๋ฅผ ์ค์ ํด์ค๋ค.
๋ค์์ผ๋ก appํด๋์ ์๋ ํ์ผ๋ค์ ๋ถ๋ฌ์ค๋ ค ํ ๋ ๋ค์๊ณผ ๊ฐ์ด @app/index๋ก ๋ถ๋ฌ์ค๋ฉด ๋๋ค.
import { Example } from '@app/index';
ํด๋ ๊ตฌ์กฐ๊ฐ ๋ณต์กํ์ง ์๋ค๋ฉด ๊ตณ์ด ์ค์ ํด์ค ํ์๊ฐ ์์ง๋ง ํด๋ ๊ตฌ์กฐ๊ฐ ๋ณต์กํ๋ค๋ฉด ๊ตณ์ด ์ค์ ํด์ค ํ์๊ฐ ์์ ๊ฒ ๊ฐ๋ค.
๋ํ Autoimport( vscode ์๋ import extension)๊ฐ ์ค์น๋์ด์๋ค๋ฉด ์์์ importํด์คํ ๋ ๊ตณ์ด ์ฌ์ฉํด์ค ํ์๋ ์๊ฒ ์ง๋ง ๋ณต์กํ๋ค๋ฉด ์ ์ง๋ณด์์ธก๋ฉด์์ ์ค์ ํด์ฃผ๋ ๊ฒ๋ ๋์์ง ์์ ๊ฒ ๊ฐ๋ค.
์ฃผ์
paths ์ต์
์ ์ง์ ํ๊ธฐ ์ํด์ baseURL ์ต์
์ด ๋ช
์๋์์ด์ผํ๋ค.
๋ด๊ฐ ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ ๋ jsconfig.json์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์ ์์๋๋ฐ, ์ด์ ๋ํด ํ๋ฒ ์์๋ณด๋ ํ๋ก์ ํธ๊ฐ ๋ณต์กํ๊ฑฐ๋ ์ด์ ๊ดํ ํน์ํ ๊ฒฝ์ฐ๊ฐ ์๋ค๋ฉด jsconfig.jsonํ์ผ์ ์ค์ ํด์ฃผ๋๋ก ํด์ผ๊ฒ ๋ค.
-์ด์-