๊ทธ ๋ฒ๊ทธ๋ ์ ๋ง ์ด์ํฉ๋๋ค.
์ด๋ ์์ ์์ typescript2
config ๋ฐ ํ๋ก์ ํธ tsconfig.json
include
์ต์
์ผ๋ก ์ธํด ์ด์ํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์์ํ์ต๋๋ค.
๋๋ ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํด๋ฅผ ๋ฉ์ท๋ค๊ฐ, ์ฌ์ ์ํ๊ฑฐ๋ ์ฐ๊ฒฐํ๊ฑฐ๋, ๋ฌด์์ํ ๊น์?
๊ทธ๋ฐ ๋ค์ ์ต์ข
์ ์ผ๋ก ๋ฌด์์ด ๋์ฐฉํ๋์ง ํ์ธํ๊ธฐ ์ํด์ด ๋ฐฐ์ด์ ๋๋ฒ๊ทธํด์ผํ๋ค๊ณ ๊ฒฐ์ ํ์ต๋๋ค.
๋ด rollup-plugin-typescript2
๊ตฌ์ฑ :
typescript2({
clean: true,
tsconfigDefaults: {
....
include: [path.resolve(__dirname, 'styles.d.ts')],
}
}),
๋ด tsconfig.json
๊ตฌ์ฑ :
...
"include": ["src", "declaration.d.ts"]
}
๊ฒฐ๊ณผ๋
๋ด๊ฐ ์ ์ ๋งํ๋ฏ์ด, ๋๋ ์ด๊ฒ์ ๋๋ฒ๊น
ํ๊ธฐ ์์ํ๋๋ฐ ๋งค๋ฒ ์ด์ํ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ค์ ๋ก ์ด๋ฌํ ์์ฑ์ ์ฐ๊ฒฐํ์ง๋ ์์ง๋ง ์ธ๋ฑ์ค ์
์ ๊ฐ์ ๋์ฒดํ๋ฏ๋ก ๋๋๊ฒ๋ ๊ฐ๋ฐ์ ๊ฒฝํ์ด ์
ํ๋ฉ๋๋ค.
๋ด ๋ง์:
๋ด tsconfig
๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ 0์ผ๋ก ๊ฐ์ ธ์ typescript2
๊ตฌ์ฑ์ 0 ์ธ๋ฑ์ค ์๋์ ๊ฐ ๋์ ๋ฃ์ต๋๋ค.
์ 1 :
typescript2: ['a']
tsconfig: ['b', 'c']
result: ['b', 'c']
์ 2 :
typescript2: ['a', 'd']
tsconfig: ['b', 'c']
result: ['b', 'c']
์ 3 :
typescript2: ['a', 'd', 'e']
tsconfig: ['b', 'c']
result: ['b', 'c', 'e']
์์ ํ ์ง์ฆ๋
๊ด๋ จ์ฑ์ด ์๋์ง๋ ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง
๋
ธ๋ : 13.13.0
์ด์์ฒด์ : macOS Catalina 10.15.4
์ด ์ฌ์ฉํ๊ฒ include
๋ถ๊ฐ๋ฅ ๋น์ ์ ๋ฐฐ์ด์ด ๋ ๊ฒ์
๋๋ค ์ผ๋ง๋ ์ค๋ ๋ชจ๋ฅผ ๋๋ฌธ์ tsconfig.json
ํฅ๋ฏธ๋ก์ด ๊ฒ์
typescript2
๊ตฌ์ฑ include
์ต์
์ tsconfigDefaults
์์ tsconfigOverride
์ธ๋ฑ์ค๋ณ๋ก ์๋ tsconfig.json
include
์ต์
์ ์ฌ์ ์ํฉ๋๋ค.
์ฆ, ์ ํํ ๋ฐ๋์
๋๋ค.
๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋ํ ๋งค์ฐ ๋์ฉ๋๋ค
๊ทธ๋ฆฌ๊ณ ํ ๊ฐ์ง ๋
๋ช ๊ฐ์ง ์ถ๊ฐ ์กฐ์ฌ ํ
๋์ผํ ๋์์ด ๋ค๋ฅธ ๋ฐฐ์ด ์์ฑ๊ณผ๋ ๊ด๋ จ์ด ์์์ ๊นจ๋ฌ์์ต๋๋ค.
๊ทธ๋์ ์ ๋ ์ด์ ์ https://github.com/jaredpalmer/tsdx/pull/666#discussion_r404847759 ์์์ด ๋ฌธ์ ๋ฅผ ๊ฒช์์ผ๋ฉฐ ๊ทธ ๋ฌธ์ ์ ๋ฐ๋ผ _.merge
์ ๊น์ ๋ณํฉ์ด ์๋ํ๋ ๋ฐฉ์์
๋๋ค. ๊น์ ๋ณํฉ์ด๋ฏ๋ก ๋ฐฐ์ด์ ๋ณํฉํ๊ณ ์ธ๋ฑ์ค๋ ๋ฐฐ์ด์ ์ ์ผํ ์๋ณ์์
๋๋ค. _unexpected_ ์ผ ์ ์์ง๋ง ๋ฅ ๋จธ์ง์ด๋ฏ๋ก ๋ฅ ๋จธ์ง๊ฐ ์๋ํ๋ ๋ฐฉ์์
๋๋ค.
์ค์ ๋ก ์ด๋ฌํ ์์ฑ์ ์ฐ๊ฒฐํ์ง๋ ์์ง๋ง ์ธ๋ฑ์ค ์ ์ ๊ฐ์ ๋์ฒดํฉ๋๋ค .
tsconfig
๋ก ๋ฎ์ด ์ธ ๋ฐฉ๋ฒ์ด ์ ํ ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋์๊ฒ ์๋ชป๋ ํ๋์ฒ๋ผ ๋ณด์
๋๋ค.tsconfig
์ ๊ด๋ จํ์ฌ exclude
tsconfig
์๋ํ๋ ๋ฐฉ์๊ณผ ์ ์ฌํฉ๋๋ค. exclude
์ด๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๋ฎ์ด ์๋๋ค.include
๋ฐ exclude
์์ ์์ ๋ณํฉ์ ์ํํ๋ PR์ ์์ฑํ ์ ์์ง๋ง ๋ณ๊ฒฝ ์ฌํญ์ _pretty_ ๊นจ๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์ด ๋ชจ๋ ๋ค์ด ์คํธ๋ฆผ ์ฌ์ฉ์์๊ฒ ์ด๋ค ์ํฅ์ ๋ฏธ์น ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. TSDX ์ฌ์ฉ์๊ฐ ์์ ๋ณํฉ ๋๋ ๊น์ ๋ณํฉ์ ์์ํ๋ ๊ฒฝ์ฐ Idk์ด์ง๋ง ๊น์ด๋ฅผ ์์ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ์ด ์ค๋จ๋ฉ๋๋ค.
typescript2
๊ตฌ์ฑinclude
์ต์ ์tsconfigDefaults
์์tsconfigOverride
์ธ๋ฑ์ค๋ณ๋ก ์๋tsconfig.json
include
์ต์ ์ ์ฌ์ ์ํฉ๋๋ค.์ฆ, ์ ํํ ๋ฐ๋์ ๋๋ค.
์, ์ด๊ฒ์ด tsconfigOverride
์๋ ๋ฐฉ์์
๋๋ค. ์ฌ์ ์์
๋๋ค.
๋์ผํ ๋์์ด ๋ค๋ฅธ ๋ฐฐ์ด ์์ฑ๊ณผ๋ ๊ด๋ จ์ด ์์์ ๊นจ๋ฌ์์ต๋๋ค.
๋ค, ์ด๊ฒ์ด _.merge
๊ฐ ๊น์ ๋ณํฉ์ ์ํํ๋ ๋ฐฉ๋ฒ์
๋๋ค. ๋ฐ๋ผ์ ๋ฐฐ์ด ์ธ tsconfig
์ ๋์ผํ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์ต๋๋ค.
@ agilgur5 ์๋ต ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
1) ๋ด ๊ด์ ์์์ด ๋์์ ๊ตฌ์ฑ์ ์์ ํ ์ธ๋ชจ ์๊ฒ ๋ง๋ญ๋๋ค. ์ด๋ ์ด์ ์์น์ ๋ฌถ์ฌ ์์ผ๋ฉด ๊ตฌ์ฑ์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅ ํ ์ ์์ต๋๋ค.
2) ์ฌ์ค, ๊ทธ๊ฒ์ ํฐ ๋ณํ๊ฐ ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ์ ๋ฐฉํฅ์ด ์ต์์ DX ๋ฅผ ๋ฌ์ฑํ๋ ๊ฒ์ด๋ผ๋ฉด ์ด๊ฒ์ ๋ช ํํ๊ณ ์ ์ฉํ๊ฒ ๋ง๋ค์ด์ผํฉ๋๋ค.
๋๋์ด ์ผ์ ์ฒ๋ฆฌํ๋ ๋ด ์ฃผ๋จธ๋์ ํธ๋ฆญ์ ๊ฐ์ง๊ณ ์์ง๋ง, ๊ทธ๊ฒ์ ๊นจ๋ํ ์ฝ๋์ ๊ด์ ์์ ์ก์์ด ๋ณด์ธ๋ค - ๋ฐฉ๊ธ ์ฝ์ tsconfig
, GET include
์์ฑ์ ๋ด ๋ฐฐ์ด์ด์ ์ฐ๊ฒฐ. ๋ ์ฌ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๋์ ์ ์:
1) ๊ธฐ๋ณธ๊ฐ์ ๊ฒฝ์ฐ-๊ธฐ๋ณธ ์์ฑ์ ์์งํ๊ณ ์๋ tsconfig์ ์ฐ๊ฒฐํฉ๋๋ค. ์ค๋ณต์ ์ ๊ฑฐํ์ญ์์ค.
2) ์ฌ์ ์-์ฌ์ ์ ์ต์
๋ง ์ ์ฉ
๊ธฐ๋ณธ๊ฐ์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ ์ ๋ ๋ ์ฐ๊ฒฐ๋์ง ์์ผ๋ฉฐ ์ฌ์ ์๋ฉ๋๋ค. ์์์ ์ธ๊ธํ๋ฏ์ด ์ฐ๊ฒฐ์ tsconfig
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ ์ํ๋ ๊ฒ์ _impossible_ ๋ง๋ญ๋๋ค. ๊ทธ๊ฒ์ ์ฌ๋ฌ๋ฉด์์ ๋์๊ฒ ์๋ชป๋ ํ๋์ผ๋ก ๋ค๋ฆฌ๋ฏ๋ก ๊ฐ๋ ฅํ ๊ถ์ฅํ์ง ์์ต๋๋ค.
๋ชจ๋ ์ต์
์ด ํท๊ฐ ๋ฆฐ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ฌํ ์ต์
์ด "์ต๊ณ ์ DX"๋ผ๋ ๋ฐ ๋์ํ์ง ์์ต๋๋ค. ์์ ๋ณํฉ์ tsconfig
๊ฐ ๊ธฐ๋ณธ exclude
์ ํจ๊ป ์๋ํ๋ ๋ฐฉ์์ ๊ฐ์ฅ ๊ฐ๊น์ง๋ง, ์ ์ถฉ์์ด์๋ ๊ฒ์ ์๋๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ธ๋ ์ดํน ์ฒด์ธ์ง์๋ ๋ง์ ์๊ฐ์ด ํ์ํฉ๋๋ค. ์ด๊ฒ์ด ์ ๊ฐ์ด๋ฅผ ์ ๊ธฐ ํ ์ด์ ์
๋๋ค. ๋ค์ด ์คํธ๋ฆผ ํจ๊ณผ๋ ์ฌ์ํ์ง ์์ต๋๋ค. TSDX๋ ๋ํ ๊ทธ๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ์
๋ฐ์ดํธํ๊ธฐ ์ํด ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฆด๋ฆฌ์คํด์ผํฉ๋๋ค.
@ agilgur5 ๊ด์ฐฎ์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํ๊ฑฐ๋ ์ ํ ์ฌ์ ์ ํ ์ ์์ต๋๋ค.
์์ธ? ํด๋น ์ธ๋ฑ์ค์ ๊ฐ์ด ๊ธฐ๋ก๋์ง ์๋๋ค๋ ๋ณด์ฅ์ ์์ต๋๋ค.
๋ํ ๋ฐฐ์ด์ ๊ฐ์ผ๋ก undefined๋ฅผ ํตํด ํ์ํ ๊ฐ์ ์ถ๊ฐ๋ก ์ถ๊ฐ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์์คํ
์ ํ์ด ์๋ค๋ ๊ฒ์ด ๋ฐํ ์ก์ต๋๊น? ํ๋ฅญํฉ๋๋ค.
๊ฒฝ์ฐ:
d.ts
์
๋ ฅ์ ์ถ๊ฐํ๊ณ ์ถ์ต๋๋ค.src
์ธ๋ถ์ ๋ค๋ฅธ ํ๋ก์ ํธ ํน์ d.ts
ํ์ดํ๊ณผ ํจ๊ป ์์ ์ src
๋๋ ํ ๋ฆฌ๋ฅผ "include"์ ๋ฃ์ต๋๋ค.๋ณด์๋ค์ํผ์ด๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ ํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. tsconfig.json์ ์ฝ๊ณ "include"์์ฑ์ ๊ฐ์ ธ ์์ [ 'src', 'some.d.ts', 'another.d.ts', 'config.d.ts']์ ๋ณํฉํด์ผํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์์ ํ ์ค๋ฒ ํค๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.
ํํธ ๋๋ ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง ์์ ๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ ๊ทธ๊ฒ์ ์์ ๋ด์ง ๋ชปํ๊ณ ๋ฌด์์ด ํจ๊ณผ๊ฐ ์๋์ง ์์ ๋ด๊ธฐ ์ํด ์์คํ ์๊ฐ์ ํ ์ ํ ์ ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ ๋ฉ์์ง ์ดํ์ ์ด๋ฏธ 2 ๊ฐ ์ด์์ ๊ด๋ จ ๋ฌธ์ ๋ฅผ ํ์ธํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๊ณ์ ๋ ๊ฒ์
๋๋ค.
๋ชจ๋ ๊ฒ์ ๊ทธ๋๋ก๋๋ฉด ์ฌ์ฉํ ์์๊ณ ์๋ฌด๊ฒ๋ ๋ณด์ฅ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ธ๋ ๋ฐ์ค๊ฐ๋๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ฐ์ธ์ ์ ํธ๋ "์ข์์"/ "์ซ์ด์"์ ๋ํ ์ฌ์ง๊ฐ ์์ต๋๋ค.
์ด๊ฒ์ ์ฌ์ฉํ๊ฑฐ๋ ์ฌ์ฉํ์ง ์์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ํ ์ ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ ๊ด๋ จ๋ ๋ค๋ฅธ ์ฌ๋๋ค์ ์๊ฒฌ์ ์์งํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ํ ๊ฐ์ง ๋, ํ์ฌ ์๋ฃจ์
์ ์ ์งํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์์์ ์ค๋ช
ํ ํดํน์ด ์์ต๋๋ค.์ด๋ฅผ ๊ณ ์ ํ ์ค๋น๊ฐ๋์์ต๋๋ค. ๊ทธ๋ฌ๋์ด ์๋ฃจ์
์ ํฌ๋ช
ํ๊ฒ ๋ง๋๋ ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง ์ดํดํ์ง ๋ชปํฉ๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ด ๊นจ์ง ๊ฒ์ด๋ผ๋ ์ฌ์ค์ ์ฝ๋งค์ด์ง ์๊ณ ๋ง์
๋๋ค.
๋ด ๋ง์, ๋ด๊ฐ ์ด๋ฏธ ์ฌ๋ฌ ๊ฐ์ง ์ต์
์ ์ ๊ณตํ์ง๋ง ์ฌ๊ธฐ์์ ์์ ์ ์ ํธ๋๋ฅผ ์ง์ ํ๊ณ ์์ต๋๋ค. ๋๋ ๊ทธ ์ ํธ๋, ์ฐ๊ฒฐ์ด ๊ทผ๋ณธ์ ์ผ๋ก ๊นจ์ง๊ณ ๋น์ทํ๊ฒ ์ง๊ด์ ์ด์ง ์๊ณ ์ ํ "ํฌ๋ช
ํ์ง ์์"์ด์ ๋ฅผ ๋ ๋ฒ ์ด๋ฏธ ๋งํ๋ค. ๋ฐ๋ณตํ์๋ฉด, ์ฐ๊ฒฐ์ _ ๊ทธ๋ฅ _ ๋ธ๋ ์ดํน ์ฒด์ธ์ง๊ฐ ์๋๋ผ ๋ง ๊ทธ๋๋ก ์ค๋ฒ๋ผ์ด๋๋ฅผ ๋ถ๊ฐ๋ฅ ํ๊ฒ ๋ง๋ญ๋๋ค. ๋ค์ ๋ฐ๋ณตํ๊ฒ ์ต๋๋ค. ๋ถ๊ฐ๋ฅ ํฉ๋๋ค.
์ฐ๊ฒฐ๋ก ์ฌ์ ์ํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ ๊ฒ์ "์ ํธ"๊ฐ ์๋๋ผ ์ฌ์ค์
๋๋ค.
๋ค์ ๋งํ์ง๋ง, ์ฌ์ ์ ํ ์์๋ "๊ธฐ๋ณธ๊ฐ"์ ๊ธฐ๋ณธ๊ฐ์ด ์๋๋ผ ํ์ ์ฌํญ์ ๋๋ค. "๊ธฐ๋ณธ๊ฐ"์ ์๊ตฌ ์ฌํญ์ผ๋ก ๋ณ๊ฒฝํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ผ๋ฉฐ ์๋ชป๋ ๋์์ ๋๋ค.
์ง๊ธ ์ ์ฒด ๋ณํฉ์ ์ฌ์ ์ ํ ์ ์์ผ๋ฉฐ ์ฐ๊ฒฐ์ ์ฌ์ ์ ํ ์ ์์ต๋๋ค. ๊ธฐ์กด ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ถ๊ฐ๋ฅ ํ๊ฒ ๋ง๋๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
๋ํ ๊ทผ๋ณธ์ ์ผ๋ก ์์๋์ง ์์ ๋์ฒด ์ต์
์ ์ด๋ฏธ ๋ ๋ฒ ์ ๊ณตํ๋๋ฐ ์ด๋ ์์ ๋ณํฉ์
๋๋ค. ๋ค์ ๋ฐ๋ณตํ๊ฒ ์ต๋๋ค. ์์ ๋ณํฉ์ ์ฌ์ฉํ์ฌ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์๋ ์์ต๋๋ค.
๊ทธ๊ฒ์ด ๋ ๋์์ง๋ ๋
ผ์์ ์ฌ์ง๊ฐ ์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ ์ ์ถฉ์ ์ด ์์ต๋๋ค.
์ ๋ ์ด์ ์ ๋ฒ๊ทธ๋ฅผ ์์ ํ๊ธฐ ์ํด ์ฌ๊ธฐ์ ๊ธฐ์ฌํ์ต๋๋ค (์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ฝ์ ๊ธฐ ๋๋ฌธ์ _.merge
๋ผ๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค). ๊ทธ๋ฆฌ๊ณ ์ ๊ฐ ์ ์งํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ ์๋น ๋ถ๋ถ์ ์ฐจ์งํฉ๋๋ค (~ 10 %). ์ฌ๊ธฐ์ ์ด์ผ๊ธฐํ๋ ๊ฒ๋ง์ด ์๋๋ผ ...
๋งํ ๊ฒ๋์์ด,์ด ๋ฌธ์ ๋ ๋ณ๊ฒฝ์์ด ํด๊ฒฐํ ์ ์์ต๋๋ค. tsconfigConcat
๋๋ tsconfigDefaultShallow
๋ฑ์ ๋ํ ์ ์ต์
์ ์ถ๊ฐ ํ ์ ์์ต๋๋ค.
์ต์ ์ด ํ๋ ๋ฟ์ด๊ณ ๊นจ์ ธ์ผํ๊ณ ๊ธฐ์กด ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ถ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด์ผํ๋ค๊ณ ๋งํ๋ ๊ฒ์ ์ฌ์ค์ด ์๋๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ฌ๊ธฐ์ ๋ฌด์์ํ๋ ์ผ์ ๊นจ์ผ ํ ๊ฒ ๊ฐ์์. ๋ฌธ์ํ ๋ฐ ์์ฑ ์ด๋ฆ์ ์ ์ ์ ๋ฐ๋ผ ์๋ํ๋๋กํ๋ ค๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์์ ์ํํด์ผํฉ๋๋ค.
tsconfigDefaults
-์๋์ ๋ชจ๋ ํญ๋ชฉ์ด ๊น์ด ๋ณํฉ๋๋ ๊ฐ์ฒด์
๋๋ค.tsconfig
-์ด๊ฒ์ ์์ฒด ๊ฐ์ ธ ์ค๊ธฐ์ ๋ชจ๋ ๊ฒ ์ดํ์ typescript์์ ์ป์ ๊ฐ์ฒด์
๋๋ค. ์ฌ๊ธฐ์์๋ ๋ชจ๋ ๊ฐ์ tsconfigDefaults
๊ฐ์ ๋์ฒดํฉ๋๋ค. ์ฌ๊ธฐ์์๋ ๋ชจ๋ ๋ฐฐ์ด์ tsconfigDefaults
๋ฐฐ์ด๊ณผ ์ฐ๊ฒฐ ๋ฉ๋๋ค.tsconfigOverride
-์ด๊ฒ์ ํต ์ต์
์
๋๋ค. ๊ฐ์ฒด๋ ์ฌ์ ํ ๊น๊ฒ ๋ณํฉ๋์ง๋ง ์ฌ๊ธฐ์ ๋ฐฐ์ด์ ์ ์ฒด ๋ฐฐ์ด์ ๋์ฒด ํฉ๋๋ค. ๋ฐ๋ผ์ ์ฌ๊ธฐ์ ๋น ํฌํจ ๋ฐฐ์ด์ ์ ๊ณตํ๋ฉด ์ต์ข
tsconfig์๋ ํฌํจ์ด ์ ํ ์์ต๋๋ค.์ง์ํ๋ ค๋ ๋ชจ๋ ์ผ์ด์ค (์ฌ์ฉ์๊ฐ ์ ์ ํ๊ฒ ๋ณ๊ฒฝ ํ ํ)๊ฐ ํฌํจ๋ฉ๋๊น? ์๋๋ฉด ์ ๊ฐ ๋๋ฝ ๋ ๊ฒ์ด ์์ต๋๊น?
@ezolenko ๋ ๋๋๊ณ ์ฌ์ฉํ๊ธฐ์ ๋ง์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
@ezolenko ์ ๋น์ ์ด ์ผ์ ๊นจ์ผํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋๋ ์ด๋ฏธ ๊นจ์ง์ง ์๋ ์ต์ ์ ์ ๊ณตํ์ต๋๋ค.
๋ฌธ์์ ๋ค์๊ณผ ๊ฐ์ด ๋์ ์๊ธฐ ๋๋ฌธ์ ๋์ดํ ๋ด์ฉ์ด "๋ฌธ์ ๋ฐ ์์ฑ ์ด๋ฆ์ ์ ์ "์ ์ด๋ป๊ฒ ๋ฐ์ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
tsconfigDefaults
๋ก ์ ๋ฌ ๋ ๊ฐ์ฒด๋๋ก๋ ๋tsconfig.json
์ ๋ณํฉ ๋ฉ๋๋ค. typescript์ ์ ๋ฌ ๋ ์ต์ข ๊ตฌ์ฑ์tsconfigDefaults
๊ฐ์ด๋ก๋ ๋tsconfig.json
๊ฐ์ผ๋ก ๋์ฒด ๋ ๊ฒฐ๊ณผ์ ๋๋ค.
[...]
์ด๊ฒ์ ๊น์ ๋ณํฉ์ ๋๋ค (๊ฐ์ฒด๊ฐ ๋ณํฉ ๋๊ณ ๋ฐฐ์ด์ด ์ฐ๊ฒฐ๋๊ณ ๊ธฐ๋ณธ ์์๊ฐ ๋์ฒด๋๋ ๋ฑ)verbosity
๋ฅผ 3์ผ๋ก ๋๋ฆฌ๊ณ ์๊ธฐ์น ์์ ์ผ์ด ๋ฐ์ํ๋ฉดparsed tsconfig
์ฐพ์ต๋๋ค.
"merged", "replaced"๋ฐ "deep merge"๋ก ํ์๋๋ฉฐ ๋ชจ๋ ๊ธฐ๋ณธ๊ฐ์ ๋์ฒดํ๊ณ ์ฌ์ ์ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋๋จธ์ง์๋ _ ๋ค๋ฅธ _ ๋ค๋ฅธ _ "์ฐ๊ฒฐ๋"์ ๋ํ ๋จ์ผ ์ฐธ์กฐ๊ฐ ์์ง๋ง ๋ฅ ๋ณํฉ์ ์ค์ ๋ก ์ฐ๊ฒฐ๋์ง _ ์์ต๋๋ค _. 5 ๊ฐ์ ์ฐธ๊ณ ๋ฌธํ์ ํ ๊ฐ์ง๋ฅผ ๋งํ๊ณ 6 ๋ฒ์งธ๋ ํ ๋ ธ์ต๋๋ค. ๋์๊ฒ ๊ทธ๊ฒ์ ์๋ชป๋ 6 ๋ฒ์งธ ์ฐธ์กฐ๊ฐ ์์ ๋์ด์ผํ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฌ๋ฉฐ 5 ๊ฐ์ ์ฌ๋ฐ๋ฅธ ์ฐธ์กฐ๊ฐ ์๋ชป๋ 6 ๋ฒ์งธ๋ก ๋ณ๊ฒฝ๋ ๊ฒ์ด ์๋๋๋ค.
lodash
๋ ์ฌ์ค์์ ํ์ค์ด๋ฉฐ ๋ณํฉ์ ๋ํ ์ ์๋ ์ฐ๊ฒฐํ๊ธฐ _not_์
๋๋ค. ๊ธฐ๋ณธ๊ฐ ์ ์ ์๋ ๋์ผํ ์์ฑ ๊ฐ์ธ _not_ concatenated๋ฅผ ์ค์ ํ ๋ ์ฌ์ ์๋๋ค๋ ๊ฒ์
๋๋ค.
_.defaults({ a: ['a'] }, { a: ['b', 'c'] });
//ย =>ย {a: ['a']}
_.defaultsDeep({ a: ['a'] }, { a: ['b', 'c'] });
// => {a: ['a', 'c']}
์ฐ๊ฒฐ ์ต์ ์ ์ถ๊ฐํ๊ณ ์ถ๋ค๋ฉด ๋ฌธ์์ 5 ๊ฐ ์ด์์ ์ฐธ์กฐ์ ์ผ์นํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ณ๋์ ๊ตฌ์ฑ์ด๋์ด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋์๊ด.
๋ํ tsconfigOverride
๋ฐ ์์ฒด ๋ฌธ์๋ก ๋์นญ์ ๊นจ๋จ๋ฆฝ๋๋ค.
tsconfigOverride
:{}
tsconfigDefaults
์ฐธ์กฐํ์ญ์์ค.
๊ธฐ๋ณธ๊ฐ์ด ์ฌ์ ์ ๋ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ์ฆ, ์ ์๊ฐ ๋์ ์ฐ๊ฒฐ๋๋๋ก ๋ง๋๋ ๊ฒ์ ๋งค์ฐ ์ง๊ด์ ์ด์ง ์์ต๋๋ค. ๊น์ ๋ณํฉ์ ๋ฐฐ์ด์ ๋ํด ์ง๊ด์ ์ด์ง ์์ ์ ์์ง๋ง ๋ฌธ์๋ ๋ช ๋ฐฑํ๊ฒ ๊ทธ๊ฒ์ด ๊น์ ๋ณํฉ์ด๋ผ๊ณ ๋งํ๊ณ ์ธ๋ฑ์ค๊ฐ ๊ด๋ จ์ฑ์ด ์๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฒ์ด ๋ฌธ์ ๋ผ๋ ๊ฒ์ ๋นจ๋ฆฌ ์ดํดํ์ต๋๋ค. ๋๋ ๋ํ ๋ฒ๊ทธ๋ฅผ๋ณด๊ณ ํ์ง ์์๋ค. ์๋ํ๋ฉด ๊ทธ๊ฒ์ด ๋ฌธ์๊ฐ ๋งํ๋ ๊ฒ์ด๊ณ ์ฌ์ง์ด๋ ๋ฅ ๋จธ์ง์ ๋ํ ๋งํฌ์ด๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๊ฒ์ ๋ฒ๊ทธ๊ฐ ์๋๋ผ ์๋ ๋ ํ๋์ด๋ค.
๋ด๊ฐ ๋งํ๋ฏ์ด ๋ฐฐ์ด์ ์๊ฒ ๋ณํฉํ๋ ๊ฒ์ด ๋ ์ง๊ด์ ์ผ ์ ์์ต๋๋ค. tsconfig
_itself_๊ฐ ์ค์ ๋ก ์๋ํ๋ ๋ฐฉ์์
๋๋ค. ์์์ ๋งํฌํ๋ฏ์ด tsconfig
_itself_๋ exclude
๋ฅผ ์ถ๊ฐ ํ ๋ ์ฐ๊ฒฐ๋์ง ์์ผ๋ฉฐ ๊ธฐ์กด exclude
์ฌ์ ์ํฉ๋๋ค.
๋ฐ๋ผ์ concatenate๋ ์ด๋ฏธ ๋ฌธ์์ 5 ๊ฐ ์ด์์ ์ฐธ์กฐ, ๋ณํฉ ์ ์, ๊ธฐ๋ณธ๊ฐ ์ ์ ๋๋ tsconfig
์์ฒด ๋์๊ณผ ์ผ์นํ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋ค๋ฅธ ์ต์
์ ๋์นญ๊ณผ ๋ฌธ์๋ฅผ ๊นจ๋จ๋ฆฝ๋๋ค. ์ด๊ฒ์ด ์ผ๋ง๋ ์ง๊ด์ ์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ ์ฌ๋ฌ ๋ฒ ๋งํ๋ฏ์ด ์ฌ์ ์ํ๋ ๋์ ๋งค์ฐ ์ง๊ด์ ์ด์ง ์์ ์ฐ๊ฒฐ๋ก ๋ง๋๋ ๊ฒ์ ํน์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ _impossible_ ํฉ๋๋ค. ๋ค์์ TSDX์ ์ฌ์ฉ๋ฒ์ ๋๋ค.
์๋๋ ์์ ์ exclude
๋ฅผ ์ถ๊ฐํ๋ฉด ์ฐ๋ฆฌ๊ฐ ์ค์ ํ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ ์ํ๋ ๊ฒ์
๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ๋ค๋ฅธ ๋ชจ๋ ์์ฑ ์ด๋ฆ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์์ฑ ์ด๋ฆ์ ์ค์ ํ์ง ์์ ๊ฒฝ์ฐ์๋ง ์ ์ฉ๋ฉ๋๋ค (๋ค์ ๋งํ๋ฉด ๊ธฐ๋ณธ๊ฐ์ ์ ์ ๋ฐ ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๊ธฐ๋ณธ๊ฐ์ด ์๋ํ๋ ๋ฐฉ์).
์ฐ๊ฒฐํ๋๋ก ๋ณ๊ฒฝํ๋ฉด ์ฌ์ฉ์๋ ์ด์ ๊ธฐ๋ณธ exclude
์ ์ฌ์ ์ ํ ๋ฐฉ๋ฒ์ด ์์ผ๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ ์ํ๋ ๊ฒ์ _impossible_ ์
๋๋ค. tsconfig
์ ๊ธฐ๋ณธ๊ฐ ์ธ exclude
๋ ๋ฐฐ์ก ํ๋ฏ๋ก tsconfig
_itself_์์ ํ ์ ์์ง๋ง tsconfig
์ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ ์ํ๋ ๊ฒ๋ _impossible_ ํฉ๋๋ค. ๊ทธ.
์ ๋ด๊ฐ _ ์ ์ฒด ์ํ๊ณ _์์ _ ๊ธฐ์กด์ ์ ์ _์ _ ๊ธฐ์กด์ ์ฌ์ฉ _์ ๋ฐ๋ณตํ๋ฉด์ ์ฌ๊ธฐ์ ๊นจ์ง ๊ธฐ๋ก์ฒ๋ผ ์ด์ผ๊ธฐํ๊ณ ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋ฟก๋ฟก
๊ทธ๋ฆฌ๊ณ ์ ๊ฐ ์ฌ๋ฌ ๋ฒ ๋งํ๋ฏ์ด ์ฌ์ ์ํ๋ ๋์ ๋งค์ฐ ์ง๊ด์ ์ด์ง ์์ ์ฐ๊ฒฐ๋ก ๋ง๋ญ๋๋ค.
ํน์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ถ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค. ๋ค์์ TSDX์ ์ฌ์ฉ๋ฒ์ ๋๋ค.
https://github.com/jaredpalmer/tsdx/blob/17ffcd215f78a4e9d6936644cbeab332f6439088/src/createRollupConfig.ts#L149 -L178
์ด ๊ตฌ์ฑ์ ์ฝ๊ฒ ์ค๋จ ๋ ์ ์์ผ๋ฉฐ ์ด๊ฒ์ด ์ ๋ช ํํ์ง ์์์ง ์ดํดํ ์ ์์ต๋๋ค. ๋ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๊นจ์ง๊ธฐ๋ฅผ ์ํ์ง ์๊ธฐ ๋๋ฌธ์์ด ๋ฌธ์ ๋ฅผ ๋ง๋ค์์ต๋๋ค.
์ฌ๋ฏธ์๋ ์ ์ @ezolenko ์ ์ ๋ ์ด๋ฏธ TSDX๋ฅผ ํฌํจํ์ฌ ๋ณดํธํ๋ ๋ฐ ๋์์ด๋๋ ์๋ฃจ์ ์ ์ ์ํ์ง๋ง ์ฌ์ ํ ์ ํญํฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ ์์ฑ ์ด๋ฆ์ ์ค์ ํ์ง ์์ ๊ฒฝ์ฐ์๋ง ์ ์ฉ๋ฉ๋๋ค.
๊ธฐ๋ณธ ๋์์ ๋์ํฉ๋๋ค. tsconfig์ ํด๋น ์์ฑ์ด์๋ ๊ฒฝ์ฐ์๋ง ๊ตฌ์ฑ ๊ธฐ๋ณธ๊ฐ์ ์ ์ฉํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด์ง๋ง ์ด๋ก ์ธํด ๋ค๋ฅธ ๋ง์ ๋ณต์กํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉฐ ๊ทธ ์๋ฃจ์ ์ API๋ฅผ ์ง๋์น๊ฒ ๋ณต์กํ๊ฒ ๋ง๋ญ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ ๋ฌด์ํ ์ ์์ต๋๋ค.
๋ฌธ์ ๋ ์ ์ฌ์ฉ์๊ฐ ๋์๊ด ์์ฑ์๊ฐ ๊ธ์ง ํ ๋ด์ฉ์ ์ก์ธ์ค ํ ์ ์์ด์ผ ํ๋๊ฐ์ ๋๋ค.
๋ฎ์ด ์ธ ์์๋ tsconfig ๊ตฌ์ฑ์ ํ์ฉํด์ผํ์ง๋ง ๋์์ ์ฌ์ ์ค์ ์ ํ์ฅ ํ ๊ธฐํ๋ฅผ ์ ๊ณตํด์ผํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ์์ ์ ๋๋ค.
ํด๊ฒฐ์ฑ ์ ์๋ก์ด API์ ๋์์ธ์๋ง ์์ต๋๋ค.
์ด ๊ตฌ์ฑ์ ์ฝ๊ฒ ์ค๋จ ๋ ์ ์์ผ๋ฉฐ ์ด๊ฒ์ด ์ ๋ช ํํ์ง ์์์ง ์ดํดํ ์ ์์ต๋๋ค. ๋ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๊นจ์ง๊ธฐ๋ฅผ ์ํ์ง ์๊ธฐ ๋๋ฌธ์์ด ๋ฌธ์ ๋ฅผ ๋ง๋ค์์ต๋๋ค.
๋น์ ์ ๋ด๊ฐ ์๊ฒฉ์ผ๋ก ๋งํ์ง ์์ ๋ง์ ๋ด ์
์์ ๊บผ๋ด๊ณ ์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ํ ์ ์๋ค๊ณ ๋งํ์ง ์์๊ณ ๊นจ์ง๊ธฐ ์ด๋ ต๋ค๊ณ ๋งํ์ง๋ ์์๋ค. _ ๋น์ ์ _ ๊ธฐ์กด์ ์ ์ _ ๊ธฐ์กด์ ์ฌ์ฉ __ ๊ธฐ๋ณธ๊ฐ์
๋ด๊ฐ ์ฌ๋ฌ ๋ฒ ๋งํ๋ฏ์ด, ๋ด ์ ์์ ๋์ ๋ฐฐ์ด์ ์๊ฒ ๋ณํฉํ๋ ๊ฒ์
๋๋ค. ์ฆ tsconfig
๋ ๋ชจ๋ ๋น ๋ฐฐ์ด ์์ฑ์ ๋ํด tsconfigDefaults
๋ฅผ ์ฌ์ ์ํ๊ณ tsconfig
_itself_๊ฐ ์๋ํฉ๋๋ค. .
๋ด๊ฐ ์ฌ๋ฌ ๋ฒ ๋งํ๋ฏ์ด ์ด๋ ๋ธ๋ ์ดํน ์ฒด์ธ์ง ๋๋ ๋น ๋ธ๋ ์ดํน ์ฒด์ธ์ง๋ก ์ํ ํ ์ ์์ต๋๋ค.
๋ด ์ ์์ ๋ง์ ๊บผ๋ด์ง ๋ง์ธ์. ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณต ํด ์๋๋ฐ, ๋ด๊ฐ ์ผ๋ ๋ด์ฉ์ ๊ตฌ์ฑํ๋ ๋์ ์ค์ ๋ก ์ฝ์ด๋ณด์ธ์.
๋ฌธ์ ๋ ์ ์ฌ์ฉ์๊ฐ ๋์๊ด ์์ฑ์๊ฐ ๊ธ์ง ํ ๋ด์ฉ์ ์ก์ธ์ค ํ ์ ์์ด์ผ ํ๋๊ฐ์ ๋๋ค.
tsconfig
๋ ๊ทธ๊ฒ์ ๊ธ์งํ์ง ์์๊ณ , TSDX๋ ๊ทธ๊ฒ์ ๊ธ์งํ์ง ์์๊ณ , rollup-plugin-typescript2
๋ ๊ทธ๊ฒ์ ๊ธ์งํ์ง ์์์ผ๋ฏ๋ก ๋น์ ์ด ๋ฌด์์ ๋งํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋ฎ์ด ์ธ ์์๋ tsconfig ๊ตฌ์ฑ์ ํ์ฉํด์ผํ์ง๋ง ๋์์ ์ฌ์ ์ค์ ์ ํ์ฅ ํ ๊ธฐํ๋ฅผ ์ ๊ณตํด์ผํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ์์ ์ ๋๋ค.
ํด๊ฒฐ์ฑ ์ ์๋ก์ด API์ ๋์์ธ์๋ง ์์ต๋๋ค.
์ด๊ฒ์ ๋ํด tsconfigConcat
์ต์
์ ์ถ๊ฐ ํ ์ ์์ผ๋ฉฐ ์ด๋ "์ API"์
๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ์ ์ฒด ์ ์๋ฅผ ์ฌ์ฐฝ์กฐํ์ฌ ํ์ฌ API๋ฅผ ๊นจ ๋จ๋ฆฌ๋ฉด ์ ์ฒด ์ธํธ์ ์๋ก์ด ๋ฌธ์ ์ ์๋ก์ด ์ง๊ด์ ์ด์ง ์์ ๋์์ด ์์ฑ๋ฉ๋๋ค. ๊น์ ๋ณํฉ์ ๋ฐฐ์ด์ ๋ํด ์ง๊ด์ ์ด์ง ์์ ์ ์์ง๋ง ์ฌ์ ํ _correct_ ๋์์
๋๋ค. ์ฐ๊ฒฐ์ ๊ธฐ๋ณธ์ด ์๋ฏธํ๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋จ์ํ ์๋ชป๋ ๋์์
๋๋ค.
tsconfigConcat
๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํด๊ฒฐํ ์ ์์ผ๋ฉฐ ๋ฌธ์ ๊ทธ๋๋ก ์ด๋ฆ์ ์ฐ๊ฒฐ์ด ์๊ณ ๊ทธ๊ฒ์ด ์ ํํํ๋ ์ผ์ด๊ธฐ ๋๋ฌธ์ ๋ ์ง๊ด์ ์
๋๋ค.
tsconfigDefaults
๋ฅผ "์ฐ๊ฒฐ"์ ์๋ฏธํ๋๋ก ๋ณ๊ฒฝํ๋ ๊ฒ์ 5 ๋ฒ์งธ๋ก _ ๊ธฐ๋ณธ๊ฐ์ด ์๋ฏธํ๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ด ์๋๋๋ค _.
๊ธฐ๋ณธ = \ = ์ฐ๊ฒฐ. ๊ทธ๊ฒ์ ๋ด ์๊ฒฌ์ด ์๋๋ผ ์ ์์ ๋๋ค.
@ agilgur5 ์ฃ์กํ์ง๋ง ์ง์งํ๊ฒ ๋ฐ์ ๋ค์ผ ์๋ ์์ต๋๋ค.
๋น์ ์ ๋ชจ๋ ๋ฌธ์ฅ์ด ๋
ผ๋์ ์ฌ์ง๊ฐ ์์ต๋๋ค.
๋๋ ๋จ์ํ ํ์ฌ API๊ฐ ๊ทธ๊ฒ์ ๋ํ ์ ์ ํ ์์
์ ์ ํ ํ์ฉํ์ง ์๋๋ค๊ณ ์ฃผ์ฅํ๋ฉฐ ์ด๊ฒ์ด ๊ทธ๊ฒ์ ๋ณ๊ฒฝํ๋ ์ด์ ์
๋๋ค.
๋ ์ด์ ๊ณ์ํ์ง ์์ ๊ฒ์
๋๋ค.
๊ธ์, ๋๋ ์ฌ๋๋ค์ ์ ์์ ๋จ์ด๋ฅผ ๊บผ๋ด์ง ์์๊ณ , ๊ทธ๋ค์ ์ค์ ๋จ์ด๋ฅผ ์ฝ์ง ์๊ณ , ๊ตฌ์ฑํ๊ณ , ๊ธฐ์ฌ์์ ์ฑ๊ฒฉ์ ๊ณต๊ฒฉํ๊ณ , 0 ๊ฐ์ ๋งํฌ๋ฅผ ์ ๊ณตํ๊ณ , 0 ๊ฐ์ ๋์์ ์ ๊ณตํ๊ณ , ํ๋์ ์ต์ ๋ง ๊ณ ๋ คํ๊ณ , ๋ค๋ฅธ ์ต์ ์ ๊ณ ๋ คํ์ง ์์์ต๋๋ค. .
๋์์ ์ฃผ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์ค์ ์ ์, ์ค์ ์ฌ์ฉ ์ฌ๋ก ๋ฐ ์ค์ ๋์์ ์ ๊ณตํ๋ ๊ธฐ์ฌ์๋ฅผ ๊ณต๊ฒฉํ๊ณ ์ถ๋ค๋ฉด ๊ทธ๊ฒ์ด ๋น์ ์ perogative๋ผ๊ณ ์๊ฐํฉ๋๋ค : shrug :
๋๋ lodash merge๊ฐ ์ค์ ๋ก ๊ทธ ๋ถ๋ถ์ ์์ฑํ ๋ ๋ฐฐ์ด์ ๋ณํฉํ๋ค๋ ์ธ์์ ๋ฐ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋๋ฉด ์ด๋ ์ด์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๋์ง ์ ๊ฒฝ ์ฐ์ง ์์์ต๋๋ค. ์ธ๋ฑ์ค๋ฅผ ์์ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ๋ด์ฉ์ ๋ถ๋ช ํ ๋ฎ์ด ์ฐ๊ธฐ ๋๋ฌธ์ (๋ง์ต๋๊น? ๋ฐฐ์ด์ ๋ํ ์๋ฐ ์คํฌ๋ฆฝํธ๊ฐ ์๋ ์ค์ ๋ฐฐ์ด์ด ์๋๋ผ ํค์ ๋ํ ์ซ์๊ฐ์๋ ์ฌ์ ์ ๋๊น?) ํ์ฌ ๋ฌธ์๋ ๊ฑฐ์ง๋ง์ ๋๋ค.
์ด์์ ์ผ๋ก, default / main / override tsconfigs ์ต์
์ ๋์ผํ ๋๋ผ์ด ๋ฐฉ๋ฒ์ผ๋ก ์ค์นผ๋ผ ๊ฐ๊ณผ ๋ฐฐ์ด ๋ชจ๋์ ๋ชจ๋ ๋งค๊ฐ ๋ณ์๋ฅผ ์ฌ์ฉ์ ์ ์ ํ ์ ์์ด์ผํฉ๋๋ค. ์ธ๋ฑ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐฐ์ด ์์๋ฅผ ๋์ฒดํ๋ Lodash ๋ฐฉ๋ฒ์๋ ํ ๊ฐ์ง ํฐ ๋จ์ ์ด ์์ต๋๋ค. ๋ฆฌํฐ๋ด ํฌ์ ๋ฐฐ์ด์ ๋ง๋ค ์ ์์ต๋๋ค (์๋ง๋ undefined
s ๋ฌถ์์ผ๋ก ๋ฐฐ์ด์ ์ฑ์ฐ๋ ๊ฒ์
๋๊น?). ์ฆ, ๋กค์
๊ตฌ์ฑ์ ๋์ ์ผ๋ก ๋น๋๋์ด์ผํ๋ฉฐ json ํ์ผ ์ธ tsconfig๋์ด๋ฅผ ์ ํ ์ํ ํ ์ ์์ต๋๋ค.
๋ฆฌํฐ๋ด ํฌ์ ๋ฐฐ์ด์ ์ฌ์ฉํ๋๋ผ๋ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์๋ฅผ ๊ต์ฒดํ๋ ๊ฒ์ ๋๋ฌด ์ทจ์ฝํฉ๋๋ค.
๋ฐ๋ฉด์ ๋ค๋ฅธ ์ด๋ค ๊ฒ๋ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฐ ๋ฐฉ์์ผ๋ก ์๋ํ์ง ์๋๋ค๋ฉด ์ฐ๊ฒฐ์ ๋๋์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํผ์์๋ ์ด์ ๊ฐ์ ์ ๊ฑฐ ํ ์ ์์ต๋๋ค.
์๋ ์ ์ํ๋๋ก ์ฐ๊ฒฐ๊ณผ ๋ฐ๊พธ๊ธฐ ์ฌ์ด๋ฅผ ์ ํํ๋ ๊ฒ์ ๋ ๋ฐฐ๋ก ๋๋์ต๋๋ค.
@ agilgur5๊ฐ ์ ์ํ๋๋ก ๋ฐฐ์ด์ ๋์ฒดํ๊ธฐ ์ํด ๋ ๋ณํฉ์ ๋ชจ๋ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์๋ง๋ ๊ฐ์ฅ ๋๋ผ์ด ์ต์ ์ผ ๊ฒ์ ๋๋ค. ์ ์งํ๋ ค๋ ๊ฐ์ ๋ฐ๋ณตํด์ผํ๋ ๋์ ๊ฐ์ ์ ๊ฑฐ ํ ์ ์์ต๋๋ค. ๊ทธ๋๋ ์ฌ์ ํ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด๋ฉฐ ์ฌ๋๋ค์์ด๋ฅผ ์ํด ๊ตฌ์ฑ์ ๋ค์ ์์ฑํด์ผํฉ๋๋ค (https://xkcd.com/1172/ ์ฐธ์กฐ).
์ด๋ฌํ ์ต์ ์ ๋์์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ ์งํฉ์ ๋ง๋ค๊ณ ๊ฒฝ๊ณ ์ ํจ๊ป ๊ธฐ์กด ์ต์ ์ ์ฌ์ฉํ์ง ์์ ์ ์์ต๋๋ค.
(์ด๋๊ฐ์์ ์ค์ํ ํฌ์ธํธ๋ฅผ ๋์น ๊ฒฝ์ฐ ์ฃ์กํฉ๋๋ค. ์ ์ฒด ์ค๋ ๋ ๋ง ํ์ด ๋ณด์์ต๋๋ค)
@ezolenko ๋๋ ๋ค์ ๋ฐฉ๋ฒ์ ๋ณธ๋ค
์ํฉ๊ณผ ๋๊ธฐ๋ฅผ ์ดํด ๋ณด๊ฒ ์ต๋๋ค.
๊ฐ๋ฐ์๋ ๋กค์
ํ๋ฌ๊ทธ์ธ์ ํตํด typescript์ ํ์ํ ๋ช ๊ฐ์ง ๊ตฌ์ฑ์ ์ถ๊ฐํ๋ ค๊ณ ํฉ๋๋ค.
์ด ๊ฒฝ์ฐ ๊ฐ๋ฐ์๊ฐ ์ค์ ์ ์์ ํ๊ฒ ์ถ๊ฐํ๋ ๊ฒ์ ๋ง์ง ์์์ผํ๋ฉฐ ๊ตฌ์ฑ ๋ฐ ๋กค์
๊ตฌ์ฑ์ ๋ณํฉ ํ ๋ ๋ค๋ฅธ ์ค์ ์ ์์ง ์์์ผํฉ๋๋ค.
์ด๊ฒ์ ์ฐ๋ฆฌ์๊ฒ ๋ฌด์์ ๋งํฉ๋๊น? ์๋ฏธ๋ก ์์ ์์ํด ๋ณด๊ฒ ์ต๋๋ค.
์์ ์ ๋ด๊ฐ ๋งํ๋ฏ์ด
๊ธฐ๋ณธ ๋์์ ๋์ํฉ๋๋ค. tsconfig์ ํด๋น ์์ฑ์ด์๋ ๊ฒฝ์ฐ์๋ง ๊ตฌ์ฑ ๊ธฐ๋ณธ๊ฐ์ ์ ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ด๊ฒ์ ์์ ํ ์ฌ ์ค๊ณ ํ ์ ์์ต๋๋ค.
๋ด ์ ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
tsconfig
ํด๋น ์์ฑ์ด์๋ ๊ฒฝ์ฐ tsconfigDefaults
์์ฑ์ ์ ์ฉํฉ๋๋ค.tsconfigOverride
ํด์ผํฉ๋๋ค.์ธ ๋ฒ์งธ ์ถ๊ฐ rpt2 ์ต์ ์์ด API๋ฅผ 50 % ์ด์ ๋ณต์กํ๊ฒ ๋ง๋ค๊ณ ๋ชจ๋ ๊ฐ๋ฐ์๊ฐ์ด ์ต์ ์ ์ดํดํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ํผํ๋ ค๊ณ ํฉ๋๋ค.
@ agilgur5 ํ์ค๊ณผ ๋น์ ์ด ๋งํ๋ ๋ง์ด
๋ํ ์ด๋ฉ์ผ ์๋ฆผ ๋๋ถ์ ์๋ณธ ๋ฉ์์ง๋ฅผ 8 ๋ฒ ์์ ํ์ง ์๊ณ ์ฝ์ ๋๋ถ์ ์ฌ๋๋ค์ ๋์ ๋ ์ ๋ณด์ด๊ฒ๋์์ต๋๋ค.
์๋ฌด๋ ๋น์ ์ ๊ณต๊ฒฉํ๊ณ ์ถ์ดํ์ง ์์๊ณ , ์๋ฌด๋ ๊ทธ๋ ๊ฒํ์ง ์์์ต๋๋ค.
๋น์ ์ ๋จ์ํ ๊ณต๊ฒฉ์ ์ธ ํ๋๋ฅผ ๊ทธ๋ง๋๊ณ ์ด ์ค๋ ๋์์ ๋ชจ์๋๋ ์ฐ์ค์ ์ฐ์ง ๋ง๋ผ๋ ์์ฒญ์ ๋ฐ์์ต๋๋ค.
@maktarsis ์ ๊ทผ ๋ฐฉ์์์ dev๊ฐ tsconfig์์ ํญ๋ชฉ์ ํฌํจํ๊ฑฐ๋ ์ ์ธํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น? ์๋๋ฆฌ์ค๋ ๋ค๋ฅธ ๊ณณ์์ ์ฌ์ฉ๋๋ tsconfig.json์ด ์๊ณ json ์์ฒด๋ฅผ ๊ฑด๋๋ฆฌ์ง ์๊ณ ๋กค์ ์์ ์ฌ์ฉํ๊ณ ์ถ์ง๋ง ์ด๋ค ์ด์ ๋ก ์ ์ธ ๋ฐฐ์ด์์ ์ค์ ์ ๊ฑฐํ๋ ค๋ ๊ฒ์ ๋๋ค.
@ezolenko ๋๋ ๋น์ ์ ์ดํดํ์ต๋๋ค.
๋น์ฐํ ์์์ ์ธ๊ธํ๋ฏ์ด ์ด๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ๋๊ธฐ๋ณด๋ค๋ ๊ฐ๋ฅ์ฑ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค.
์ ์ธ ํญ๋ชฉ์ ๋ค์ ์์ฑํด์ผํ๋ ์ํฉ์ด ์์ง ๋ณด์ด์ง ์์ต๋๋ค.
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ๋๋ ์ฐ๋ฆฌ๊ฐ dev์ "exclude"๋ฅผ ๋ฎ์ด ์ธ ํ์๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฆ, ์ด์ ๋ฅผ ์์ํ ์ ์์ต๋๋ค.
"์ด๋ค ์ด์ ๋ก"์ด์ ๋ฅผ ์ดํดํ ํ์๊ฐ ์์ต๋๋ค.
์ด๋ค ๊ฒฝ์ฐ์๋ ์ด๋ฌํ ๊ฐ๋ฅ์ฑ์ ์ํ๋ฉด ์ฐ๊ฒฐ์์ํ ์ถ๊ฐ API๋ฅผ ์ ๊ณตํด์ผํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ดํดํ์ค ์ ์๋ฏ์ด, ๋๋ ๊ทธ๊ฒ์ด ์ฃผ์ฅ๋์ง ์๊ณ ๋จ์ํ ๋ถํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
"์ ์ธ"์์ ๋ฌด์ธ๊ฐ๋ฅผ ์ ์ธํ๋ ๊ฒ์ ์ ํ ํ์ํ์ง ์์ ์ ์์ง๋ง ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์งํํ๋ฉด ๊ตฌ์ฑ ์ดํด๊ฐ ๋ณต์กํด์ง๋๋ค.
์ฐ๋ฆฌ๋ ๋ ๋ค ํ์ํฉ๋๋ค. ๊ฑฐ๊ธฐ์์๋ ๋ฐฐ์ด์ ๋ฌด์ธ๊ฐ๋ฅผ ์ถ๊ฐํ๊ณ ๊ทธ๊ฒ์์ ๋ฌด์ธ๊ฐ๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ์์ ๋ณํฉ์ ์ฌ์ฉํ๋ฉด ์ ์ฒด ์ด๋ ์ด (๋ณ๊ฒฝ ์ฌํญ ํฌํจ)๋ฅผ ์์ ์์ค์์ ๋ณต์ ํ์ฌ ์ถ๊ฐ ๋ฐ ์ ๊ฑฐ๊ฐ ๋ชจ๋ ์ํ๋ฉ๋๋ค. ๋ณ๋ก ํธ๋ฆฌํ์ง๋ ์์ง๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
"esModuleInterop": true
์ ๊ฒฝ์ฐ์๋ ๋ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ผ๋ถ ํ๊ฒฝ์์ ์๋ํ์ง ์์ต๋๋ค.
config.json์ ์ธ๋ชจ์๋ ์ปดํ์ผ๋ฌ ์ต์ :
{
...
"compilerOptions": {
...
"esModuleInterop": true,
},
}
rollup-config์ ์ ์ฉํ ์ปดํ์ผ๋ฌ ์ต์ :
typescript({
useTsconfigDeclarationDir: true,
tsconfigOverride: {
esModuleInterop: true,
},
}),
@maktarsis ์ฒซ ๋ฒ์งธ ์ ์์ ์์๋๋ ๋์์ด์์ต๋๋ค.
์๋ tsconfig์ ํด๋น ์์ฑ์ด์๋ ๊ฒฝ์ฐ tsconfigDefaults ์์ฑ์ ์ ์ฉํฉ๋๋ค.
^ ์์ ์ฃผ์์ include
๋๋ ๋ฐฐ์ด์ด ์๋๋ฏ๋ก ๊ด๋ จ์ด์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ธ๊ธ ๋ "์ ์"์ tsconfigDefaults
์ด๋ฏธ ์ํ ํ ์์
์
๋๋ค.
๋ํ ์ ์ TSDX๋ esModuleInterop
๋ง์ด ์ฌ์ฉํ๋ฏ๋ก tsconfig.json
์์ ์๋ํ๋ค๋ ๊ฒ์ ์๊ณ ์์ผ๋ฉฐ ๊ทธ ์ฃผ์์ด ์๋ฏธํ๋ ๋ฐ๋ ํ์คํ์ง ์์ต๋๋ค. ๊ฒ์ ๋ ๊ตฌ์ฑ์๋ compilerOptions
์ด ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์์ผํฉ๋๋ค.
js
typescript({
useTsconfigDeclarationDir: true,
tsconfigOverride: {
compilerOptions: {
esModuleInterop: true,
},
},
}),
๊ทธ๋ฌ๋ ์ด๋ ์๋ ํ๋๋ก ๋ฌด์๋๊ณ ์๋ํฉ๋๋ค.
์์ ๋ณํฉ๊ฐ ์ด์ ์์ด REPO์ ๋ช ๋ฒ ์ธ๊ธ ๋ ๊ฒ์ ์ฌ๊ธฐ์ ์ฃผ๋ชฉ : (์ฌ๊ธฐ์ฒ๋ผ TS์ ์์ ๋ณํฉ ๋์์ ์ธ๊ธํ๋) # 86, https://github.com/ezolenko/rollup-plugin-typescript2/issues/72 #issuecomment -383242460 ๋ฐ https://github.com/ezolenko/rollup-plugin-typescript2/issues/208#issuecomment -594237841
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฐ๋ฆฌ๊ฐ ์ฌ๊ธฐ์ ๋ฌด์์ํ๋ ์ผ์ ๊นจ์ผ ํ ๊ฒ ๊ฐ์์. ๋ฌธ์ํ ๋ฐ ์์ฑ ์ด๋ฆ์ ์ ์ ์ ๋ฐ๋ผ ์๋ํ๋๋กํ๋ ค๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์์ ์ํํด์ผํฉ๋๋ค.
tsconfigDefaults
-์๋์ ๋ชจ๋ ํญ๋ชฉ์ด ๊น์ด ๋ณํฉ๋๋ ๊ฐ์ฒด์ ๋๋ค.tsconfig
-์ด๊ฒ์ ์์ฒด ๊ฐ์ ธ ์ค๊ธฐ์ ๋ชจ๋ ๊ฒ ์ดํ์ typescript์์ ์ป์ ๊ฐ์ฒด์ ๋๋ค. ์ฌ๊ธฐ์์๋ ๋ชจ๋ ๊ฐ์tsconfigDefaults
๊ฐ์ ๋์ฒดํฉ๋๋ค. ์ฌ๊ธฐ์์๋ ๋ชจ๋ ๋ฐฐ์ด์tsconfigDefaults
๋ฐฐ์ด๊ณผ ์ฐ๊ฒฐ ๋ฉ๋๋ค.tsconfigOverride
-์ด๊ฒ์ ํต ์ต์ ์ ๋๋ค. ๊ฐ์ฒด๋ ์ฌ์ ํ ๊น๊ฒ ๋ณํฉ๋์ง๋ง ์ฌ๊ธฐ์ ๋ฐฐ์ด์ ์ ์ฒด ๋ฐฐ์ด์ ๋์ฒด ํฉ๋๋ค. ๋ฐ๋ผ์ ์ฌ๊ธฐ์ ๋น ํฌํจ ๋ฐฐ์ด์ ์ ๊ณตํ๋ฉด ์ต์ข tsconfig์๋ ํฌํจ์ด ์ ํ ์์ต๋๋ค.์ง์ํ๋ ค๋ ๋ชจ๋ ์ผ์ด์ค (์ฌ์ฉ์๊ฐ ์ ์ ํ๊ฒ ๋ณ๊ฒฝ ํ ํ)๊ฐ ํฌํจ๋ฉ๋๊น? ์๋๋ฉด ์ ๊ฐ ๋๋ฝ ๋ ๊ฒ์ด ์์ต๋๊น?