Rollup-plugin-typescript2: ๊ธฐ๋ณธ tsconfig ์˜ต์…˜ "include"๋Š” ์›๋ž˜ tsconfig.json์˜ ์ƒ‰์ธ์œผ๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2020๋…„ 05์›” 07์ผ  ยท  24์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ezolenko/rollup-plugin-typescript2

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์™œ ์ž˜๋ชป๋œ

๊ทธ ๋ฒ„๊ทธ๋Š” ์ •๋ง ์ด์ƒํ•ฉ๋‹ˆ๋‹ค.
์–ด๋Š ์‹œ์ ์—์„œ 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"]
}

๊ฒฐ๊ณผ๋Š”
Screenshot 2020-05-07 at 19 44 57

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

๋‚ด ๋ง์€:
๋‚ด 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

๋ฒ„์ „

  • ํƒ€์ดํ”„ ์Šคํฌ๋ฆฝํŠธ : 3.8.3
  • ๋กค์—… : 2.8.1
  • rollup-plugin-typescript2 : 0.27.0

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

์šฐ๋ฆฌ๊ฐ€ ์—ฌ๊ธฐ์„œ ๋ฌด์—‡์„ํ•˜๋“  ์ผ์„ ๊นจ์•ผ ํ•  ๊ฒƒ ๊ฐ™์•„์š”. ๋ฌธ์„œํ™” ๋ฐ ์†์„ฑ ์ด๋ฆ„์˜ ์ •์‹ ์— ๋”ฐ๋ผ ์ž‘๋™ํ•˜๋„๋กํ•˜๋ ค๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

  • tsconfigDefaults -์•„๋ž˜์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์ด ๊นŠ์ด ๋ณ‘ํ•ฉ๋˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.
  • tsconfig -์ด๊ฒƒ์€ ์ž์ฒด ๊ฐ€์ ธ ์˜ค๊ธฐ์™€ ๋ชจ๋“  ๊ฒƒ ์ดํ›„์— typescript์—์„œ ์–ป์€ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์žˆ๋Š” ๋ชจ๋“  ๊ฐ’์€ tsconfigDefaults ๊ฐ’์„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์žˆ๋Š” ๋ชจ๋“  ๋ฐฐ์—ด์€ tsconfigDefaults ๋ฐฐ์—ด๊ณผ ์—ฐ๊ฒฐ ๋ฉ๋‹ˆ๋‹ค.
  • tsconfigOverride -์ด๊ฒƒ์€ ํ•ต ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด๋Š” ์—ฌ์ „ํžˆ ๊นŠ๊ฒŒ ๋ณ‘ํ•ฉ๋˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ ๋ฐฐ์—ด์€ ์ „์ฒด ๋ฐฐ์—ด์„ ๋Œ€์ฒด ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ๊ธฐ์— ๋นˆ ํฌํ•จ ๋ฐฐ์—ด์„ ์ œ๊ณตํ•˜๋ฉด ์ตœ์ข… tsconfig์—๋Š” ํฌํ•จ์ด ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค.

์ง€์›ํ•˜๋ ค๋Š” ๋ชจ๋“  ์ผ€์ด์Šค (์‚ฌ์šฉ์ž๊ฐ€ ์ ์ ˆํ•˜๊ฒŒ ๋ณ€๊ฒฝ ํ•œ ํ›„)๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์ œ๊ฐ€ ๋ˆ„๋ฝ ๋œ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

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

์ด ์‚ฌ์šฉํ•˜๊ฒŒ 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๋ฅผ ํ†ตํ•ด ํ•„์š”ํ•œ ๊ฐ’์„ ์ถ”๊ฐ€๋กœ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ ์ด ์‹œ์Šคํ…œ์— ํ‹ˆ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€ ์กŒ์Šต๋‹ˆ๊นŒ? ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ์šฐ:

  1. "include"๊ตฌ์„ฑ ์†์„ฑ์— ์ถ”๊ฐ€ d.ts ์ž…๋ ฅ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
  2. ์‚ฌ์šฉ์ž๋Š” src ์™ธ๋ถ€์˜ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ ํŠน์ • d.ts ํƒ€์ดํ•‘๊ณผ ํ•จ๊ป˜ ์ž์‹ ์˜ src ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ "include"์— ๋„ฃ์Šต๋‹ˆ๋‹ค.
  1. [ 'config.d.ts`]
    2. [ 'src', 'some.d.ts', 'another.d.ts']
  2. ๊ฒฐ๊ณผ : [ 'src', 'some.d.ts', 'another.d.ts']

๋ณด์‹œ๋‹ค์‹œํ”ผ์ด๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ ํ•  ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. 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์˜ ์‚ฌ์šฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

https://github.com/jaredpalmer/tsdx/blob/17ffcd215f78a4e9d6936644cbeab332f6439088/src/createRollupConfig.ts#L149 -L178

์˜๋„๋Š” ์ž์‹ ์˜ 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์— ํ•ด๋‹น ์†์„ฑ์ด์—†๋Š” ๊ฒฝ์šฐ์—๋งŒ ๊ตฌ์„ฑ ๊ธฐ๋ณธ๊ฐ’์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ์™„์ „ํžˆ ์žฌ ์„ค๊ณ„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์ œ์•ˆ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์›๋ณธ tsconfig ํ•ด๋‹น ์†์„ฑ์ด์—†๋Š” ๊ฒฝ์šฐ tsconfigDefaults ์†์„ฑ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  2. tsconfigOverride ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
    2.1 ์Šค์นผ๋ผ ๊ฐ’์œผ๋กœ ์ด์ „๊ณผ ๊ฐ™์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
    2.2 ๋ฐฐ์—ด ์†์„ฑ์„ ์—ฐ๊ฒฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. (์•„๋งˆ๋„ ์ด๊ฒƒ์€ ์•„๋ฌด๊ฒƒ๋„ ์ค‘๋‹จํ•ด์„œ๋Š” ์•ˆ๋˜๋ฉฐ ๊ตฌ์„ฑ ๋™๊ธฐ๋ฅผ ์ถฉ์กฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค)

์„ธ ๋ฒˆ์งธ ์ถ”๊ฐ€ rpt2 ์˜ต์…˜์€์ด API๋ฅผ 50 % ์ด์ƒ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๊ฐ€์ด ์˜ต์…˜์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ”ผํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.

@ agilgur5 ํ˜„์‹ค๊ณผ ๋‹น์‹ ์ด ๋งํ•˜๋Š” ๋ง์ด

๋˜ํ•œ ์ด๋ฉ”์ผ ์•Œ๋ฆผ ๋•๋ถ„์— ์›๋ณธ ๋ฉ”์‹œ์ง€๋ฅผ 8 ๋ฒˆ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  ์ฝ์€ ๋•๋ถ„์— ์‚ฌ๋žŒ๋“ค์˜ ๋ˆˆ์— ๋” ์ž˜ ๋ณด์ด๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์•„๋ฌด๋„ ๋‹น์‹ ์„ ๊ณต๊ฒฉํ•˜๊ณ  ์‹ถ์–ดํ•˜์ง€ ์•Š์•˜๊ณ , ์•„๋ฌด๋„ ๊ทธ๋ ‡๊ฒŒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
๋‹น์‹ ์€ ๋‹จ์ˆœํžˆ ๊ณต๊ฒฉ์ ์ธ ํƒœ๋„๋ฅผ ๊ทธ๋งŒ๋‘๊ณ ์ด ์Šค๋ ˆ๋“œ์—์„œ ๋ชจ์ˆœ๋˜๋Š” ์—ฐ์„ค์„ ์“ฐ์ง€ ๋ง๋ผ๋Š” ์š”์ฒญ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

  • 0 ๋งํฌ-๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๊ณ , ์™„์ „ํžˆ ์„ค๋ช…ํ•˜๊ณ , ์˜ˆ์ œ๋ฅผ ์ œ๊ณตํ•˜๊ณ , ์Šคํฌ๋ฆฐ ์ƒท๊นŒ์ง€ ๋งŽ์€ ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ TSDX๋ฅผ ์—ฐ๊ตฌํ•˜์—ฌ ํ™•์ธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ์„ฑ์ด ๊นจ์ง€๊ธฐ ์‰ฝ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€, ๋‚˜๋Š” ์นจ๋ฌตํ•˜์ง€ ์•Š๊ณ ์ด ๋ฌธ์ œ์— ์ง๋ฉด ํ•œ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ๋ฌธ์ œ๋ฅผ ํ™•๋Œ€ํ•˜๊ธฐ ์œ„ํ•ด์ด ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
  • 0 ๋Œ€์•ˆ-์ฃผ์˜ ๊นŠ๊ฒŒ ์ฝ์œผ์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฉ”์‹œ์ง€์—์„œ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹จ์–ด ๊บผ๋‚ด๊ธฐ-์ง„์ •ํ•˜๊ณ  ์ ์–ด๋„์ด ์‹ค์—์„œ ๋‚˜๋ฅด์‹œ์‹œ์ฆ˜์„ ๊ทธ๋งŒ๋‘์‹ญ์‹œ์˜ค. ์ด๋ ‡๊ฒŒ ์ผํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ์พŒํ•ฉ๋‹ˆ๋‹ค.

@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

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