ãã®ãã°ã¯æ¬åœã«å¥åŠã§ãã
ããæç¹ã§ã typescript2
ãšãããžã§ã¯ã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
configã®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
OSïŒmacOS Catalina 10.15.4
ããã«ããã tsconfig.json
å
ã®é
åã®é·ããããããªãããã include
ã§ããªããªããŸãã
é¢çœãããšã
typescript2
config include
ãªãã·ã§ã³ãtsconfigDefaults
ããtsconfigOverride
å
ã®tsconfig.json
include
ãªãã·ã§ã³ãã€ã³ããã¯ã¹ã§äžæžãããŸãã
ã€ãŸããããã¯æ£å察ã§ã
ã§ãããããšãŠãæªãã§ã
åŸããäžã€
ããã€ãã®è¿œå 調æ»ã®åŸ
åãåäœãä»ã®é
åããããã£ã«ãé¢é£ããŠããããšã«æ°ã¥ããŸãã
ã ããç§ã¯ä»¥åhttps://github.com/jaredpalmer/tsdx/pull/666#discussion_r404847759ã§ãã®åé¡ã«ã¶ã€ãã£ãããšãããããã®åé¡ããšã«ãããã_.merge
ã®ãã£ãŒãããŒãžãã©ã®ããã«æ©èœãããã§ãã ããã¯ãã£ãŒãããŒãžã§ãããããé
åãããŒãžããã€ã³ããã¯ã¹ãé
åã®å¯äžã®èå¥åã§ãã ããã¯_äºæããªã_ãããããŸããããããã¯æ·±ãããŒãžã§ããããããæ·±ãããŒãžãã©ã®ããã«æ©èœãããã§ãã
å®éããããã®ããããã£ã¯é£çµãããŸããããã€ã³ããã¯ã¹ã»ã«ã®å€ã眮ãæããããŸãã
tsconfig
ã§äžæžãããæ¹æ³ã¯ãŸã£ãããããŸããã ããã¯ç§ã«ã¯ééã£ãè¡åã®ããã«æããŸããexclude
ã«é¢ããŠtsconfig
ãã©ã®ããã«æ©èœããããšäŒŒãŠããŸãã exclude
ãããã©ã«ããäžæžãããŸããinclude
ãšexclude
ã ãã§æµ
ãããŒãžãè¡ãPRãäœæããããšãã§ããŸãããããã¯å€æŽã_ããªã_å£ãããšã«ãªããŸãã ããããã¹ãŠã®ããŠã³ã¹ããªãŒã ãŠãŒã¶ãŒã«ã©ã®ããã«åœ±é¿ãããã¯ããããŸããã TSDXãŠãŒã¶ãŒãæµ
ããŸãã¯æ·±ãããŒãžãæåŸ
ããŠããå Žåã¯Idkã§ãããæ·±ããã®ãæåŸ
ããŠããå Žåã¯äœ¿çšæ³ãæãªãããŸãã
typescript2
configinclude
ãªãã·ã§ã³ãtsconfigDefaults
ããtsconfigOverride
å ã®tsconfig.json
include
ãªãã·ã§ã³ãã€ã³ããã¯ã¹ã§äžæžãããŸããã€ãŸããããã¯æ£å察ã§ã
ã¯ããããã¯tsconfigOverride
ãæ©èœããããšã«ãªã£ãŠããæ¹æ³ã§ããããã¯ãªãŒããŒã©ã€ãã§ãã
åãåäœãä»ã®é åããããã£ã«ãé¢é£ããŠããããšã«æ°ã¥ããŸãã
ã¯ããããã_.merge
ããã£ãŒãããŒãžãè¡ãæ¹æ³ã§ãããããã£ãŠãé
åã§ããtsconfig
å
ã®ãã¹ãŠã®ãã®ã«åãå€æŽããããŸãã
@ agilgur5è¿ä¿¡ããããšã
1ïŒç§ã®èŠ³ç¹ããã¯ããã®åäœã«ããæ§æã¯ãŸã£ãã圹ã«ç«ããªããªããŸãã ã¢ã¬ã€å ã®äœçœ®ã«é¢é£ä»ããããŠããå Žåãæ§æã®ä¿¡é Œæ§ãä¿èšŒããããšã¯ã§ããŸããã
2ïŒç¢ºãã«ãããã¯å£æ» çãªå€åã«ãªãã§ãããã ããããç§ãã¡ã®æ¹åæ§ãæé«ã®DXãéæããããšã§ããå Žåããããæ確ã§æçšãªãã®ã«ããå¿ èŠããããŸãã
ç§ã¯ãããåŠçããããã®ããªãã¯ããã±ããã«å
¥ããŠããŸãããã¯ãªãŒã³ãªã³ãŒãã®èŠ³ç¹ããã¯ãã€ãºãå€ãããã«èŠããŸã- tsconfig
èªã¿åãã include
ããããã£ãååŸããŠããããé
åãšé£çµããŸãã ç°¡åãªã¯ãã§ãã
ç§ã®ããããïŒ
1ïŒããã©ã«ãã®å Žå-ããã©ã«ãã®ããããã£ãåéããå
ã®tsconfigãšé£çµããŸãã éè€ãåé€ããŸãã
2ïŒãªãŒããŒã©ã€ãã®å Žå-ãªãŒããŒã©ã€ããªãã·ã§ã³ã®ã¿ãé©çšããŸã
ããã©ã«ãã¯éåžžããªãŒããŒã©ã€ãããããšãã«é£çµãããããªãŒããŒã©ã€ããããŸãã ãããŠãåè¿°ããããã«ãé£çµã«ãããããã©ã«ããtsconfig
ãªãŒããŒã©ã€ãããããšã¯_äžå¯èœ_ã«ãªããŸãã ããã¯ç§ã«ã¯ããŸããŸãªæå³ã§ééã£ãè¡åã®ããã«èãããã®ã§ãç§ã¯ããã匷ããå§ãããŸããã
ãã¹ãŠã®ãªãã·ã§ã³ãæ··ä¹±ããŠãããšæããŸããããããã®ããããããæé«ã®DXãã§ããããšã«åæãããã©ããã¯ããããŸããã æµ
ãããŒãžã¯ã tsconfig
ãããã©ã«ãã®exclude
ã§ã©ã®ããã«æ©èœãããã«æãè¿ããã®ã§ããããã¬ãŒããªãããªããã°å®çŸããŸããã
äžè¬ã«ãé倧ãªå€æŽã«ã¯å€ãã®èæ
®ãæãå¿
èŠããããŸãããã®ãããç§ã¯ãããåãäžããŸãããäžæµã®åœ±é¿ã¯éèŠã§ãã TSDXã¯ããã®ãããªå€æŽã«æŽæ°ããããã«ãé倧ãªå€æŽããªãªãŒã¹ããå¿
èŠããããŸãã
@ agilgur5ã¯åé¡ãããŸãããããã©ã«ãã䜿çšããããšãããªãŒããŒã©ã€ãããããšãã§ããŸããã
åå ïŒ ãã®ã€ã³ããã¯ã¹ã«å€ãæžã蟌ãŸããªããšããä¿èšŒã¯ãããŸããã
ããã«ãé
åã®å€ãšããŠundefinedã䜿çšããå¿
èŠãªå€ãããã«è¿œå ããããšã§ããã¹ãŠãåé¿ã§ããŸãã ãããŠããã®ã·ã¹ãã ã«ã¯ã®ã£ãããããããšãããããŸãããïŒ ãã çŽ æŽãããã
ã±ãŒã¹ïŒ
d.ts
ã¿ã€ããè¿œå ããããšæããŸããsrc
ãã£ã¬ã¯ããªããincludeãå
ã«çœ®ããå¥ã®ãããžã§ã¯ãåºæã®d.ts
ã¿ã€ããsrc
å€ã«çœ®ããŸããã芧ã®ãšããããããé©åã«æ§æããæ¹æ³ã¯ãããŸããã tsconfig.jsonãèªã¿ããã®ãincludeãããããã£ãååŸããŠãããã['src'ã 'some.d.ts'ã 'another.d.ts'ã 'config.d.ts']ã«ããŒãžããå¿
èŠããããŸãã
ãããŠãããã¯å®å
šãªãªãŒããŒãããã ãšæããŸãã
ãã®éãç§ã¯åé¡ãäœã§ããããç解ããŸããã ä»ã®äººã¯ãããç解ããã圌ãã«ãšã£ãŠäœãããŸããããªãããç解ããããã«åœŒãã®è²Žéãªæéãè²»ãããããããŸããã
ãããŠãããªãã®æåã®ã¡ãã»ãŒãžã®åŸãç§ã¯ãã§ã«å°ãªããšã2ã€ã®é¢é£ããåé¡ãèŠãŠããŸããã ãããŠãããã¯ã©ãã©ãç¶ããŸãã
ãã¹ãŠããã®ãŸãŸã«ããŠãããšäœ¿ããªããªããäœãä¿èšŒã§ããªãã®ã§ãã©ãã¯ããã¯ã¹ã ãšæããŸãã
ã奜ãã/ãå«ãããšããå人çãªå¥œã¿ã®äœå°ã¯ãããŸããã
ããã¯äœ¿çšããããšã䜿çšããªãããšãã§ããŸãã ãããŠãããã¯ã§ããŸããã
ããã«é¢ãã£ãŠããä»ã®äººã®æèŠãéããã®ã«åé¡ã¯ãããŸããã
ãããŠãã1ã€ãçŸåšã®ãœãªã¥ãŒã·ã§ã³ãç¶æããã®ã«åé¡ã¯ãããŸãããäžèšã®ããã¯ããããããã䜿çšããæºåãã§ããŠããŸãã ããããç§ã¯ããã®ãœãªã¥ãŒã·ã§ã³ãéæã«ããããšã®åé¡ãäœã§ããããç解ããŠããŸãããããã¯ãé倧ãªå€æŽã䌎ããšããäºå®ã«çžãããããšã¯ãããŸããã
ã€ãŸããç§ããã§ã«è€æ°ã®ç°ãªããªãã·ã§ã³ãäžããŠããéãããªãã¯ããã§ããªãèªèº«ã®å¥œã¿ãäžããŠãããšããããšã§ãã ãã®å¥œã¿ã§ããé£çµãæ ¹æ¬çã«å£ããŠãããåæ§ã«çŽæçã§ãªãããŸã£ãããéæãã§ã¯ãªãçç±ã«ã€ããŠã¯ããã§ã«2åè¿°ã¹ãŸããã ç¹°ãè¿ãã«ãªããŸãããé£çµã¯åãªãç Žå£çãªå€æŽã§ã¯ãªããæåéããªãŒããŒã©ã€ããäžå¯èœã«ããŸãã ããäžåºŠç¹°ãè¿ããŸããäžå¯èœã§ãã
é£çµã§ãªãŒããŒã©ã€ãã§ããªãããšã¯ã奜ã¿ãã§ã¯ãããŸãããããã¯äºå®ã§ãã
ç¹°ãè¿ããŸããããªãŒããŒã©ã€ãã§ããªããããã©ã«ããã¯ããã©ã«ãã§ã¯ãªãããããèŠä»¶ã§ãã ãããã©ã«ãããèŠä»¶ã«å€æŽããããšã¯æå³ããªããééã£ãåäœã§ãã
çŸåšããã£ãŒãããŒãžããªãŒããŒã©ã€ãã§ããŸãããé£çµããªãŒããŒã©ã€ãããããšã¯ã§ããŸããã æ¢åã®ãŠãŒã¹ã±ãŒã¹ãäžå¯èœã«ããããšã¯æå³ããããŸããã
ç§ã¯ãŸããæ ¹æ¬çã«å£ããŠããªã代æ¿ãªãã·ã§ã³ããã§ã«2åäžããŸãããããã¯ãæµ
ãããŒãžã§ãã ããäžåºŠç¹°ãè¿ããŸãããæµ
ãããŒãžã䜿çšããŠããã解決ããããšãã§ããŸãã
ãããè¯ããã©ããã¯è°è«ã®äœå°ããããŸãã ãã¹ãŠã«ãã¬ãŒããªãããããŸãã
ç§ã¯ä»¥åã«ãã°ãä¿®æ£ããããã«ããã«è²¢ç®ããŸããïŒã³ãŒãããŒã¹ãèªãã ã®ã§_.merge
ã ãšç¥ã£ãŠããŸãïŒãããŠç§ãç¶æããŠããã©ã€ãã©ãªã¯ãã®ã©ã€ãã©ãªã®äœ¿çšã®ããªãã®éšåãå ããŠããŸãïŒã10ïŒ
ïŒãç§ã¯ããã§è«ç¹ãè¿°ã¹ãã ãã§ã¯ãããŸãã...
èšããŸã§ããªããããã¯å€æŽãå£ãããšãªã解決ã§ããŸãã tsconfigConcat
ãtsconfigDefaultShallow
ãªã©ã®æ°ãããªãã·ã§ã³ãè¿œå ã§ããŸãã
éžæè¢ã¯1ã€ãããªããããã¯å£ããŠããŠãæ¢åã®ãŠãŒã¹ã±ãŒã¹ãäžå¯èœã«ããªããã°ãªããªããšèšãã®ã¯ãåçŽã«çå®ã§ã¯ãããŸããã
ããã§äœãããŠããç©äºãå£ããªããã°ãªããªããšæããŸãã ããã¥ã¡ã³ããšããããã£åã®ç²Ÿç¥ã«åŸã£ãŠåäœãããã«ã¯ãåºæ¬çã«æ¬¡ã®ããã«ããå¿ èŠããããŸãã
tsconfigDefaults
-ããã¯ã以äžã®ãã¹ãŠãæ·±ãããŒãžããããªããžã§ã¯ãã§ãtsconfig
-ããã¯ãç¬èªã®ã€ã³ããŒããšãã¹ãŠã®åŸã«ãtypescriptããååŸãããªããžã§ã¯ãã§ãã ããã§ã®ãã¹ãŠã®å€ã¯ã tsconfigDefaults
å€ã眮ãæããŸãã ããã«ãããã¹ãŠã®é
åã¯ã tsconfigDefaults
é
åãšé£çµãããŠããŸããtsconfigOverride
-ããã¯æ žã®éžæè¢ã§ãã ãªããžã§ã¯ãã¯ãŸã æ·±ãããŒãžãããŠããŸãããããã®é
åã¯å€§èŠæš¡ãªé
åã«åã£ãŠä»£ãããŸãã ãããã£ãŠãããã§ç©ºã®ã€ã³ã¯ã«ãŒãé
åãæå®ãããšãæçµçãªtsconfigã«ã¯ã€ã³ã¯ã«ãŒãããŸã£ãããããŸãããããã¯ç§ãã¡ããµããŒãããããã¹ãŠã®ã±ãŒã¹ãã«ããŒããŸããïŒãŠãŒã¶ãŒãé©åãªå€æŽãå ããåŸïŒããŸãã¯ç§ã¯äœãã足ããŸãããïŒ
@ezolenkoã¯çŽ æŽããããµãŠã³ãã§ã䜿çšããã®ãçã«ããªã£ãŠããŸã
@ezolenkoãªãããªããç©äºãå£ããªããã°ãªããªãã®ãåãããŸãããïŒ ç§ã¯ãã§ã«å£ããŠããªããªãã·ã§ã³ãäžããŸããã
ããªãããªã¹ããããã®ããããã¥ã¡ã³ãã®ç²Ÿç¥ãšããããã£åããã©ã®ããã«åæ ããŠãããã¯ããããŸãããããã¥ã¡ã³ãã«ã¯æ¬¡ã®ããã«æžãããŠããããã§ãã
tsconfigDefaults
ãšããŠæž¡ããããªããžã§ã¯ãã¯ãããŒããããtsconfig.json
ãšããŒãžãããŸãã typescriptã«æž¡ãããæçµçãªæ§æã¯ãtsconfigDefaults
å€ããããŒããããtsconfig.json
å€ã«çœ®ãæããããçµæã«ãªããŸãã
[...]
ããã¯ãã£ãŒãããŒãžïŒãªããžã§ã¯ãã®ããŒãžãé åã®é£çµãããªããã£ãã®çœ®æãªã©ïŒã§ãããverbosity
ã3ã«å¢ãããäºæããªãããšãçºçããå Žåã¯parsed tsconfig
ãæ¢ããŸãã
ãããŒãžæžã¿ããã眮ææžã¿ããããã£ãŒãããŒãžããšè¡šç€ºãããŸãããããã¯ãã¹ãŠãããã©ã«ãã眮æããŠãªãŒããŒã©ã€ãããããšãæå³ããŸãã ãä»ã®éšåãšã¯ç°ãªãããé£çµããžã®åäžã®åç §ããããŸãããæ·±ãããŒãžã¯å®éã«ã¯é£çµããŸããã 5ã€ã®åç §ã¯1ã€ã®ããšãèšãã6çªç®ã¯æ£ãããããŸããã ç§ã«ã¯ãééã£ãŠãã6çªç®ã®åç §ãä¿®æ£ããå¿ èŠãããããã«èãããŸããã5ã€ã®æ£ããåç §ãééã£ã6çªç®ã«å€æŽããå¿ èŠã¯ãããŸããã
lodash
ã¯äºå®äžã®æšæºã§ãããããŒãžã®å®çŸ©ã¯é£çµããããšã§ã¯ãããŸããã ããã©ã«ãã®å®çŸ©ã¯ãåãããããã£å€ã_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
èªäœã®åäœãšäžèŽããŸããã ãããŠãããã¯ä»ã®ãªãã·ã§ã³ã®å¯Ÿç§°æ§ãšããã¥ã¡ã³ããå£ããŸãã ãããã©ã®ããã«çŽæçãããããŸããã
ãããŠãäœåºŠãèšã£ãããã«ããªãŒããŒã©ã€ãããã®ã§ã¯ãªããéåžžã«çŽæçã§ãªãé£çµã«ãããšãç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã
ç¬èªã®exclude
ãè¿œå ãããšãèšå®ããããã©ã«ããäžæžããããããšãç®çã§ãã ããã©ã«ãã¯ãä»ã®ãã¹ãŠã®ããããã£åãšåæ§ã«ãããããã£åãèšå®ããŠããªãå Žåã«ã®ã¿é©çšãããŸãïŒããããããã©ã«ãã®å®çŸ©ã§ããããã¹ãŠã®ã©ã€ãã©ãªã§ããã©ã«ããã©ã®ããã«æ©èœãããã§ãïŒã
ãããé£çµã«å€æŽããå ŽåããŠãŒã¶ãŒã¯ããã©ã«ãã®exclude
ããªãŒããŒã©ã€ãããæ¹æ³ããªããªããããã©ã«ãããªãŒããŒã©ã€ãããããšã¯tsconfig
ã®ããã©ã«ãã®exclude
ãåºè·ããŠããããã tsconfig
_itself_ã§å¯èœã§ãã£ãŠãã tsconfig
ã®ããã©ã«ãããªãŒããŒã©ã€ãããããšã¯_äžå¯èœ_ã«ãªããŸããããã
ãªãç§ãããã§å£ããèšé²ã®ããã«è©±ããŠããã®ãããããªãã®ã§ããã_ãšã³ã·ã¹ãã å šäœ_ã§_æ¢åã®å®çŸ©_ãš_æ¢åã®äœ¿çšæ³_ãç¹°ãè¿ããŠããŸãã
@ agilgur5
ãããŠãç§ãäœåºŠãèšã£ãããã«ãããããªãŒããŒã©ã€ãããã®ã§ã¯ãªããéåžžã«çŽæçã§ãªãé£çµã«ããŸã
ç¹å®ã®ãŠãŒã¹ã±ãŒã¹ãäžå¯èœã«ããŸãã TSDXã®äœ¿çšæ³ã¯æ¬¡ã®ãšããã§ãã
https://github.com/jaredpalmer/tsdx/blob/17ffcd215f78a4e9d6936644cbeab332f6439088/src/createRollupConfig.ts#L149 -L178
ãã®æ§æã¯ç°¡åã«äžæãããå¯èœæ§ãããããªããããããªãã«æããã§ãªãã®ãç解ã§ããŸããã ã©ã€ãã©ãªãå£ããããããããªãã®ã§ããã®åé¡ãäœæããŸããã
é¢çœãããšã«ã @ ezolenkoãšç§ã¯ã
ããã©ã«ãã¯ãããããã£åãèšå®ããŠããªãå Žåã«ã®ã¿é©çšãããŸã
ç§ã¯ããã©ã«ãã®åäœã«åæã
ããã©ã«ããäžæžãããããšã¯äžå¯èœã§ã
åé¡ã¯ããªããŠãŒã¶ãŒã¯ã©ã€ãã©ãªã®äœæè ãçŠæ¢ããŠãããã®ã«ã¢ã¯ã»ã¹ã§ããå¿ èŠãããã®ãââãšããããšã§ãã
äžæžãã§ããªãtsconfigæ§æã掻çšããå¿ èŠããããŸãããåæã«ãããªã»ãããæ¡åŒµããæ©äŒãäžããå¿ èŠããããŸãã ãããŠãããèŠç¹ã§ãã
解決çã¯ãæ°ããAPIã®èšèšã«ã®ã¿ãããŸãã
ãã®æ§æã¯ç°¡åã«äžæãããå¯èœæ§ãããããªããããããªãã«æããã§ãªãã®ãç解ã§ããŸããã ã©ã€ãã©ãªãå£ããããããããªãã®ã§ããã®åé¡ãäœæããŸããã
ããªãã¯ç§ããªã¢ãŒãã§èšããªãã£ãèšèãç§ã®å£ããåãåºããŠããŸãã ç§ã¯ãããã§ããªããšã¯èšããŸããã§ããããå£ãããããšãèšããŸããã§ããã _ããªãã®_ãœãªã¥ãŒã·ã§ã³ã¯ãããã©ã«ãã®_ãšã³ã·ã¹ãã å
šäœ_ãããã¥ã¡ã³ãèªäœã®_æ¢åã®å®çŸ©_ã«ã_æ¢åã®äœ¿çšæ³_ã«ãäžèŽããªããšèšã£ãã°ããã§ãã ããã©ã«ãã®å®çŸ©å
šäœãç Žãããšã¯æããã«ééã£ãæ¯ãèãã§ãã
ç§ã¯äœåºŠãè¿°ã¹ãŠããããã«ãç§ã®ææ¡ã¯ãæµ
ãããŒãžé
åã®ä»£ããã«ãããªãã¡ã«ããtsconfig
ãªãŒããŒã©ã€ãtsconfigDefaults
ãããã¯ãã¹ãŠã®éé
åããããã£ã®å Žåãšåæ§ãšã®ããã«tsconfig
_itself_äœåã
äœåºŠãèšã£ãããã«ãããã¯é倧ãªå€æŽãŸãã¯éé倧ãªå€æŽã§è¡ãããšãã§ããŸãã
å£ããèšèãåºããªãã§ãã ããã äœåºŠãç¹°ãè¿ããŸããããäœãäžããã®ã§ã¯ãªããå®éã«æžãããã®ãèªãã§ãã ããã
åé¡ã¯ããªããŠãŒã¶ãŒã¯ã©ã€ãã©ãªã®äœæè ãçŠæ¢ããŠãããã®ã«ã¢ã¯ã»ã¹ã§ããå¿ èŠãããã®ãââãšããããšã§ãã
tsconfig
ã¯ãããçŠæ¢ããŠããŸããã§ãããTSDXã¯ãããçŠæ¢ããŠããŸããã§ããããããŠrollup-plugin-typescript2
ããããçŠæ¢ããŠããªãã£ãã®ã§ãããªããäœãæããŠããã®ãããããŸããã
äžæžãã§ããªãtsconfigæ§æã掻çšããå¿ èŠããããŸãããåæã«ãããªã»ãããæ¡åŒµããæ©äŒãäžããå¿ èŠããããŸãã ãããŠãããèŠç¹ã§ãã
解決çã¯ãæ°ããAPIã®èšèšã«ã®ã¿ãããŸãã
ã¯ããããã«tsconfigConcat
ãªãã·ã§ã³ãè¿œå ã§ããŸããããã¯ããæ°ããAPIãã«ãªããŸãã ããã©ã«ãã®å®çŸ©å
šäœãåçºæããããšã«ãã£ãŠçŸåšã®APIãç Žããšãäžé£ã®æ°ããåé¡ãšæ°ããçŽæçã§ãªãåäœãäœæãããŸãã ãã£ãŒãããŒãžã¯é
åã«ãšã£ãŠçŽæçã§ã¯ãªããããããŸããããããã§ã_æ£ãã_åäœã§ãã é£çµã¯ãããã©ã«ããæå³ãããã®ã§ã¯ãªããããåã«ééã£ãåäœã§ãã
tsconfigConcat
ã¯ãŠãŒã¹ã±ãŒã¹ã解決ããååã«æåéãé£çµãå«ãŸããŠãããããããçŽæçã§ãã
tsconfigDefaults
ããé£çµããæå³ããããã«å€æŽããã®ã¯ãããã5åç®ã_ããã©ã«ãã®æå³ã§ã¯ãªã_ããã§ã¯ãããŸããã
ããã©ã«ã= \ =é£çµã ããã¯ç§ã®æèŠã§ã¯ãããŸããããããå®çŸ©ã§ãã
@ agilgur5ç³ãèš³ãããŸããããçå£ã«åãæ¢ããããšã¯ã§ããŸããã
ããªãã®æç« ã¯ãã¹ãŠç©è°ãéžããŠããŸããç§ã¯ããã«ããããããŠããŸãã
ç§ã¯åã«ãçŸåšã®APIã¯ããã䜿ã£ãé©åãªäœæ¥ããŸã£ããèš±å¯ããŠããªããšäž»åŒµããããããããå€æŽããçç±ã§ãã
ãããããç¶ããã€ããã¯ãããŸããã
ããŠãç§ã¯äººã ã®å£ããèšèãåãåºããããå®éã®èšèãèªãã ããç©äºãäœãäžããããå¯çš¿è ã®ãã£ã©ã¯ã¿ãŒãæ»æãããã0ã®ãªã³ã¯ãæäŸãããã0ã®éžæè¢ãæäŸããããåäžã®ãªãã·ã§ã³ã®ã¿ãæ€èšããããä»ã®éžæè¢ãæ€èšãããããŸããã§ãããããã¯ããªãã§ããã
å©ããããšããŠããã ãã§ãå®éã®å®çŸ©ãå®éã®ãŠãŒã¹ã±ãŒã¹ãããã³å®éã®ä»£æ¿æ¡ãæäŸããŠããå¯çš¿è ãæ»æãããå Žåã¯ããããããªãã®æµžéããŠãããšæããŸãïŒshrugïŒ
ç§ããã®éšåãæžããŠãããšããç§ã¯lodashããŒãžãå®éã«é åãããŒãžããïŒããããã€ã³ã¿ãŒãªãŒããããäœãïŒãšããå°è±¡ãåããŠãããšæããŸãã ãŸãã¯ãé åã«äœãèµ·ãããã«ã€ããŠã泚æãæã£ãŠããŸããã§ããã ã€ã³ããã¯ã¹ãèŠçŽ åãšããŠäœ¿çšããŠé åã®å 容ãäžæžãããããã§ãïŒããã§ããïŒé åã¯å ã çã®é åã§ã¯ãªããããŸããŸããŒã®çªå·ãä»ããèŸæžã§ãããšããjavascriptã®ããšã§ããïŒïŒãçŸæç¹ã§ã®ããã¥ã¡ã³ãã¯ãããŸãã
çæ³çã«ã¯ãããã©ã«ã/ã¡ã€ã³/ãªãŒããŒã©ã€ãã®tsconfigsãªãã·ã§ã³ã«ãããã¹ã«ã©ãŒå€ãšé
åã®äž¡æ¹ã®ãã¹ãŠã®ãã©ã¡ãŒã¿ãŒãåãé©ãã¹ãæ¹æ³ã§ã«ã¹ã¿ãã€ãºã§ããããã«ããå¿
èŠããããŸãã ã€ã³ããã¯ã¹ã«åºã¥ããŠé
åèŠçŽ ã眮ãæããLodashã®æ¹æ³ã«ã¯ã1ã€ã®å€§ããªæ¬ ç¹ããããŸãããªãã©ã«ã®ã¹ããŒã¹é
åãäœæã§ããªãããšã§ãïŒ undefined
ã®æã§é
åãããã£ã³ã°ããå¯èœæ§ããããŸããïŒïŒã ã€ãŸããããŒã«ã¢ããæ§æã¯åçã«æ§ç¯ããå¿
èŠããããjsonãã¡ã€ã«ã§ããtsconfigã¯ãããããŸã£ããå®è¡ã§ããŸããã
ãªãã©ã«ã®ã¹ããŒã¹é åã䜿çšããŠããã€ã³ããã¯ã¹ã«åºã¥ããŠèŠçŽ ã眮ãæããããšã¯éåžžã«è匱ã§ãã
äžæ¹ãéåžžãã®ããã«åäœãããã®ãä»ã«ãªãå Žåãé£çµã¯é©ãã¹ãããšã§ãã ãããŠãããã ãã§ã¯ä»¥åã®å€ãåé€ããããšã¯ã§ããŸããã
ç§ãæåã«ææ¡ããããã«é£çµãšçœ®æãåãæ¿ããããšã¯ãäºéã«é©ãã¹ãããšã§ãã
@ agilgur5ãææ¡ããããã«ãäž¡æ¹ã®ããŒãžãå€æŽããŠé åã倧èŠæš¡ã«çœ®ãæããããšã¯ãããããæãé©ãã¹ããªãã·ã§ã³ã§ã¯ãããŸãããä¿æãããå€ãç¹°ãè¿ãå¿ èŠããããŸãããå€ãåé€ã§ããŸãã ãã ããããã¯ãŸã é倧ãªå€æŽã§ããããã®ããã®æ§æãæžãçŽãå¿ èŠããããŸãïŒhttps://xkcd.com/1172/ãåç §ïŒã
ãããã®ãªãã·ã§ã³ã®åäœãå€æŽããããæ°ããã»ãããäœæããŠæ¢åã®ãªãã·ã§ã³ãéæšå¥šã«ããŠèŠåã衚瀺ããããšãã§ããŸãã
ïŒã©ããã§éèŠãªãã€ã³ããéããå Žåã¯ç³ãèš³ãããŸããããã¹ã¬ããå šäœãã¹ãããããã ãã§ãïŒ
@ezolenko次ã®æ¹æ³ãããããŸã
ç¶æ³ãšåæ©ãèŠãŠã¿ãŸãããïŒ
éçºè
ã¯ãããŒã«ã¢ãããã©ã°ã€ã³ãä»ããŠtypescriptã«å¿
èŠãªæ§æãããã€ãè¿œå ããããšèããŠããŸãã
ãã®å Žåãéçºè
ãèšå®ãå®å
šã«è¿œå ããããšã劚ããããæ§æãšããŒã«ã¢ããæ§æãããŒãžãããšãã«ä»ã®èšå®ã倱ã£ããããªãããã«ããå¿
èŠããããŸãã
ããã¯ç§ãã¡ã«äœãäŒããŸããïŒ ã»ãã³ãã£ã¯ã¹ããå§ããŸãããïŒ
åã«ãèšã£ãããã«
ç§ã¯ããã©ã«ãã®åäœã«åæããŸãã tsconfigã«å¯Ÿå¿ããããããã£ããªãå Žåã«ã®ã¿configdefaultãé©çšããããšã¯çã«ããªã£ãŠããŸã...
ãããå®å šã«åèšèšããããšãã§ããŸãã
ç§ã®ææ¡ã¯æ¬¡ã®ãšããã§ãã
tsconfig
察å¿ããããããã£ããªãå Žåã¯ã tsconfigDefaults
ããããã£ãé©çšããŸããtsconfigOverride
ããããåŠçããå¿
èŠããããŸãã3çªç®ã®è¿œå ã®rpt2ãªãã·ã§ã³ãé¿ããããšããŠããŸããããã¯ããã®APIãå°ãªããšã50ïŒ è€éã«ããéçºè ã¯ãããç解ã§ããªããªãããã§ãã
@ agilgur5ããªããèšãçŸå®ãšèšèãåããã®ã§ã¯ãªãã®ã¯çŽ æŽãããããšã§ãã
ãŸããã¡ãŒã«éç¥ã®ãããã§ã8åç·šéããã«å
ã®ã¡ãã»ãŒãžãèªãã§ã人ã®ç®ã«ã¯è¯ãèŠããããã«ããŸããã
誰ãããªããæ»æããããªãã£ããããã«ã誰ããããããªãã£ãã
ããªãã¯åã«æ»æçã§ããããšãããããã®ã¹ã¬ããã§ççŸããã¹ããŒããæžãããšããããããã«æ±ããããŸããã
@maktarsisã©ã®ããã«ããªãã®ã¢ãããŒãã§éçºè ã¯tsconfigããå å«ãŸãã¯é€å€ãšã³ããªãåé€ããããšãã§ããŸããïŒ ã·ããªãªã¯æ¬¡ã®ãšããã§ããä»ã®å Žæã§äœ¿çšãããŠããtsconfig.jsonããããjsonèªäœã«è§Šããã«ããŒã«ã¢ããã§äœ¿çšãããããäœããã®çç±ã§é€å€é åããè¡ãåé€ãããã
@ezolenkoç§ã¯ããªãã®ããšãç解ããŸããã
åœç¶ãäžèšã®ããã«ãããã¯äžå¯èœã§ãã
ããããç§ãã¡ã¯ã¢ãããŒã·ã§ã³ã§ã¯ãªãå¯èœæ§ã«ã€ããŠè©±ããŠããã®ã§ãã
é€å€ãæžãçŽãå¿
èŠãããç¶æ³ã¯ãŸã ããããŸããã
ããã§ããéçºè
ã®ãé€å€ããäžæžãããå¿
èŠã¯ãªããšç§ã¯èããŠããŸãã èšãæããã°ãç§ã¯ãã®çç±ãæ³åããããšã¯ã§ããŸããã
ãäœããã®çç±ã§ãã®çç±ãç解ããå¿
èŠããããŸãã
ãããã«ãããã®å¯èœæ§ãæããããå Žåã¯ãé£çµçšã®è¿œå ã®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,
},
},
}),
ããããããã¯æå³ãããšããã«ãªãŒããŒã©ã€ãããŠæ©èœããŸãã
ããã§ãæµ ãããŒãžããã®ãªããžããªã§æ°åèšåãããŠããããšã«æ³šæããŠãã ããïŒïŒ86ïŒããã§è¡ã£ãããã«ãTSã®æµ ãããŒãžåäœã«ã€ããŠèšåããŠããŸãïŒã 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ã«ã¯ã€ã³ã¯ã«ãŒãããŸã£ãããããŸãããããã¯ç§ãã¡ããµããŒãããããã¹ãŠã®ã±ãŒã¹ãã«ããŒããŸããïŒãŠãŒã¶ãŒãé©åãªå€æŽãå ããåŸïŒããŸãã¯ç§ã¯äœãã足ããŸãããïŒ