Typescript: ν”„λ‘œμ νŠΈ λ‹Ή μ—¬λŸ¬ tsconfig.json 지원

에 λ§Œλ“  2015λ…„ 06μ›” 26일  Β·  37μ½”λ©˜νŠΈ  Β·  좜처: microsoft/TypeScript

μ•ˆλ…•ν•˜μ„Έμš”! ν”„λ‘œμ νŠΈ λ‹Ή μ—¬λŸ¬ 개의 tsconfig.json λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? 즉, 루트 λ””λ ‰ν„°λ¦¬μ—μžˆλŠ” μΌμ’…μ˜ ν”„λ‘œμ νŠΈ 전체 tsconfig.json 및 μž¬μ •μ˜ ν•  μˆ˜μžˆλŠ” ν•˜μœ„ λ””λ ‰ν„°λ¦¬μ—μžˆλŠ” μΆ”κ°€ tsconfig.json νŒŒμΌμ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? / κ·Έ dirs에 λŒ€ν•œ λͺ‡ 가지 μ˜΅μ…˜μ„ μ‘°μ • ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ? .gitignore 처럼.

예λ₯Ό λ“€μ–΄ node -ν™˜κ²½μ—μ„œ μ™ΈλΆ€ λͺ¨λ“ˆμ„ κ°œλ°œν•  λ•Œ 맀우 μœ μš©ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ λͺ¨λ“ˆμ€ 일반적으둜 μ—¬λŸ¬ 파일 (λ‚΄λΆ€ λͺ¨λ“ˆ)둜 λΆ„ν• λ˜μ§€λ§Œ 컴파일 λ‹¨κ³„μ—μ„œ ν•˜λ‚˜μ˜ 큰 파일둜 μ»΄νŒŒμΌλ©λ‹ˆλ‹€.

Question

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λ§ˆμΉ¨λ‚΄ 해결책을 μ–»μ—ˆμŠ΅λ‹ˆλ‹€.

λ‚΄ μ‘μš© ν”„λ‘œκ·Έλž¨ ꡬ쑰 :
-- μ•±/-app / client / (λ‚΄ ν΄λΌμ΄μ–ΈνŠΈ μΈ‘ μ†ŒμŠ€ μ½”λ“œ)-app / server / (λ‚΄ μ„œλ²„ μΈ‘ μ†ŒμŠ€ μ½”λ“œ)-app / build / (μ—¬κΈ°μ„œ jsλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€)-μ•± / λ…Έλ“œ λͺ¨λ“ˆ /-app / package.json-app / tsconfig.server.json-app / tsconfig.client.json

tsconfig.server.json의 λ‚΄μš© :
{ "compilerOptions": {..., "outDir": _ "build / server"_},"exclude": [ "node_modules", "client"]}

tsconfig.client.json의 λ‚΄μš© :
{ "compilerOptions": {..., "outDir": "λΉŒλ“œ / ν΄λΌμ΄μ–ΈνŠΈ"},"exclude": [ "node_modules", "server"]}


그런 λ‹€μŒ μ„œλ²„ μ†ŒμŠ€ μ½”λ“œλ₯Ό μ»΄νŒŒμΌν•˜λ €λ©΄ μ•± 루트 λ””λ ‰ν† λ¦¬μ—μ„œ λ‹€μŒ λͺ…령을 μ‚¬μš©ν•©λ‹ˆλ‹€.

tsc -p tsconfig.server.json


λ˜ν•œ 루트 μ•± λ””λ ‰ν† λ¦¬μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈ μ†ŒμŠ€ μ½”λ“œλ₯Ό μ»΄νŒŒμΌν•˜λ €λ©΄ λ‹€μŒμ„ μˆ˜ν–‰ν•˜μ‹­μ‹œμ˜€.

tsc -p tsconfig.client.json


ν΄λΌμ΄μ–ΈνŠΈ 및 μ„œλ²„ μ»΄νŒŒμΌμ„ λͺ¨λ‘ μ‹€ν–‰ν•˜κΈ° μœ„ν•΄ package.json에 λͺ…령을 μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

"슀크립트": {..., "tsc": "tsc --p tsconfig.server.json && tsc --p tsconfig.client.json", ...}

그런 λ‹€μŒ μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈλ₯Ό λͺ¨λ‘ μ»΄νŒŒμΌν•˜λ €λ©΄ 루트 μ•± λ””λ ‰ν† λ¦¬μ—μ„œ μ‹€ν–‰ν•©λ‹ˆλ‹€.

npm μ‹€ν–‰ tsc

이 의견이 당신을 λ„μšΈ 수 있기λ₯Ό λ°”λžλ‹ˆλ‹€ :-)

λͺ¨λ“  37 λŒ“κΈ€

μ•ˆλ…•ν•˜μ„Έμš” @lazutkin. ν˜„μž¬λŠ” μ§€μ›λ˜μ§€ μ•Šμ§€λ§Œ μ•½κ°„ 관련이 μžˆμœΌλ―€λ‘œμ΄ 문제λ₯Ό # 2869에 μ—°κ²°ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

μ»΄νŒŒμΌλŸ¬λŠ” 폴더에 μΈμˆ˜μ—†μ΄ tsc λ₯Ό μ‹€ν–‰ν•˜λŠ” 경우 λΉŒλ“œμ€‘μΈ 폴더에 κ°€μž₯ κ°€κΉŒμš΄ tsconfig.json을 μ„ νƒν•©λ‹ˆλ‹€. λ”°λΌμ„œ tsconfig.jsonμ΄μžˆλŠ” λ‚΄λΆ€ λ””λ ‰ν„°λ¦¬κ°€μžˆλŠ” 경우 μ™ΈλΆ€ λ””λ ‰ν„°λ¦¬μ—μžˆλŠ” 디렉터리보닀 λ¨Όμ € μ„ νƒλ©λ‹ˆλ‹€.

μ—¬λŸ¬ tsconfig.jsonμ—μ„œ 톡합 / μ˜€λ²„ 라이딩 ꡬ성을 μ§€μ›ν•˜μ§€ μ•Šμ„ 것이라고 μƒκ°ν•©λ‹ˆλ‹€.

λŒ€κ·œλͺ¨ μ—”ν„°ν”„λΌμ΄μ¦ˆ μ•±μ—λŠ” μ—¬λŸ¬ tsconfig 파일이 ν•„μˆ˜μž…λ‹ˆλ‹€.
μ œμ•ˆ : tscκ°€ ν•˜μœ„ λ””λ ‰ν† λ¦¬μ—μ„œ μƒˆ tsconfig νŒŒμΌμ„ 찾을 λ•Œλ§ˆλ‹€ tscλŠ” μ—¬κΈ°μ—μ„œ μ€‘μ§€ν•˜κ³  자체 tsconfig νŒŒμΌμ„ μ‚¬μš©ν•˜μ—¬ μƒˆ tsc ν”„λ‘œμ„ΈμŠ€λ₯Ό λ§Œλ“­λ‹ˆλ‹€.

@Eisenspalter 이것은 grunt,

λ‚΄κ°€ @Eisenspalter에 λ™μ˜ @mhegazy μ²˜λ¦¬ν•˜μ§€ ꡬ좕에 λŒ€ν•œν•˜μ§€λ§Œ μš°λ¦¬λŠ” λΉŒλ“œ 전에 μ™„λ£Œν•΄μ•Ό, μ“°κΈ° ν…ŒμŠ€νŠΈ μ†ŒμŠ€ 및 기타 ν™œλ™μ„ ν¬ν•¨ν•˜μ—¬ 개발 ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•œ 우리 λͺ¨λ‘κ°€ 이야기 λ•Œλ¬Έμ΄λ‹€. 이 λͺ¨λ“  쀑간 λ‹¨κ³„μ—μ„œ μš°λ¦¬λŠ” intellisense, typechecking 등을 ν¬ν•¨ν•˜μ—¬ typescript 지원을 λ°›μ•„μ•Όν•©λ‹ˆλ‹€. λ˜ν•œ μ•žμ„œ λ§ν–ˆλ“―μ΄ ν”„λ‘œμ νŠΈμ˜ λ‹€λ₯Έ 뢀뢄에 λŒ€ν•΄ λ‹€λ₯Έ μ†ŒμŠ€ ꡬ성 기술 (μ™ΈλΆ€-λ‚΄λΆ€ λͺ¨λ“ˆ, 단일 좜λ ₯ 파일 λ“±) 여기에 λ³„λ„μ˜ tsconfig둜 μž¬μ •μ˜ ν•  λͺ‡ 가지 μ˜΅μ…˜μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

@mhegazy μ™œ λ‹«ν˜”μŠ΅λ‹ˆκΉŒ? λ‹€μ‹œμ—¬μ‹­μ‹œμ˜€.

μ˜€λŠ˜μ€ μ—¬λŸ¬ 개의 tsconfigλ₯Ό κ°€μ§ˆ 수 있으며, 각각 κ²ΉμΉ˜λŠ” 파일 μ„ΈνŠΈλ₯Ό 가리 ν‚΅λ‹ˆλ‹€. κ·Έλž˜μ„œ ν•˜λ‚˜λŠ” srctsconfig.json, ν•˜λ‚˜λŠ” teststsconfig.json 등에 μžˆμŠ΅λ‹ˆλ‹€. 컴파일러 / λ„κ΅¬λŠ” κ°€μž₯ κ°€κΉŒμš΄ 것을 μ°ΎκΈ° μœ„ν•΄ 디렉토리 트리λ₯Ό νƒμƒ‰ν•˜μ—¬ νŒŒμΌμ„ μ°ΎμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ 당신은 λͺ¨λ“  것을 작기 μœ„ν•΄ λ£¨νŠΈμ— μ„Έ 번째 νŒŒμΌμ„ κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

이 λͺ¨λ“  것이 μ˜€λŠ˜λ‚  μ»΄νŒŒμΌλŸ¬μ™€ λ‹€λ₯Έ IDEμ—μ„œ μž‘λ™ν•©λ‹ˆλ‹€. μ›λž˜ λ¬Έμ œλŠ” 파일이 λ‹€λ₯Έ νŒŒμΌμ—μ„œ μƒμ†λ˜λ„λ‘ ν—ˆμš©ν•˜λŠ” 것이 μ—ˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” λ³΅μž‘μ„±μ„ μ •λ‹Ήν™”ν•˜λŠ” μΆ©λΆ„ν•œ κ°€μΉ˜κ°€ μžˆλ‹€κ³  μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

두 번째 문제 :

tscκ°€ ν•˜μœ„ λ””λ ‰ν† λ¦¬μ—μ„œ μƒˆ tsconfig νŒŒμΌμ„ 찾을 λ•Œλ§ˆλ‹€ tscλŠ” μ—¬κΈ°μ—μ„œ μ€‘μ§€ν•˜κ³  자체 tsconfig νŒŒμΌμ„ μ‚¬μš©ν•˜μ—¬ μƒˆ tsc ν”„λ‘œμ„ΈμŠ€λ₯Ό λ§Œλ“­λ‹ˆλ‹€.

μ•žμ„œ μ–ΈκΈ‰ν–ˆλ“―μ΄ tsconfig.json은 λΉŒλ“œ λ“œλΌμ΄λ²„λ₯Ό μ‚¬μš©ν•΄μ•Όν•˜λŠ” μ—¬λŸ¬ ν˜ΈμΆœμ„ μˆ˜ν–‰ν•˜λ €λŠ” 경우 tsc.js / tsc.exe에 λŒ€ν•œ 단일 ν˜ΈμΆœμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

@lazutkin κ³Ό @Eisenspalter κ°€ μ§ˆλ¬Έμ— λ‹΅ν•©λ‹ˆλ‹€.

ν—‰ν—‰
μ—¬λŸ¬ tsconfig.json이 μž‘λ™ν•˜λ„λ‘ ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 적어도 TypeScript 1.7.3μ—μ„œλŠ” ν•˜λ‚˜μ˜ tsconfig.json 만 읽고 ν”„λ‘œμ νŠΈμ˜ 루트 디렉토리 (λ˜λŠ” μƒμœ„)μ—μžˆμ„ κ²ƒμœΌλ‘œ μ˜ˆμƒλ©λ‹ˆλ‹€.

@Ziink μœ„μ˜ λ‚΄ μ˜κ²¬μ€ λ™μΌν•œ ν”„λ‘œμ νŠΈμ˜ μ—¬λŸ¬ tsconfig에 κ΄€ν•œ 것이 μ•„λ‹™λ‹ˆλ‹€. 각각 λ‹€λ₯Έ tsconfigλ₯Ό 가진 μ—¬λŸ¬ ν”„λ‘œμ νŠΈ / 디렉토리에 κ΄€ν•œ 것이 μ—ˆμŠ΅λ‹ˆλ‹€. ts ν”„λ‘œμ νŠΈκ°€ λ°°μΉ˜λ˜λŠ” 방법은 https://github.com/Microsoft/TypeScript/tree/master/srcλ₯Ό μ°Έμ‘°

TypeScript둜 μž‘μ„±λœ ν”„λ‘œμ νŠΈκ°€ 있으며 λ‘˜ λ‹€ λŒ€μƒμœΌλ‘œ μ§€μ •ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

  1. ES5 / AMDλ₯Ό μ‚¬μš©ν•˜λŠ” λΈŒλΌμš°μ € ( /browser )
  2. CommonJS 및 생성기 (TS의 async / await)κ°€μžˆλŠ” nodejs ( server 파일).

( /common ) 폴더에 일뢀 곡유 파일이 있고 common μ—μ„œ browser 및 server 둜 κ°€μ Έ μ˜€κΈ°κ°€ μžˆμŠ΅λ‹ˆλ‹€.
IDE 지원, λͺ¨λ“  였λ₯˜ 등을 μœ μ§€ν•˜λ©΄μ„œ μ΄λŸ¬ν•œ ꡬ성을 μ–΄λ–»κ²Œ 얻을 수 μžˆμŠ΅λ‹ˆκΉŒ? 토둠이 λ‚΄ μ˜μ‹¬μ— λŒ€ν•œ λ‹΅μ΄λ˜μ—ˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

@bartq TS 1.8μ—μ„œλŠ” 두 개의 tsconfig 파일 (λΈŒλΌμš°μ € 용, μ„œλ²„μš©)을 λ§Œλ“€κ³  두 ν•˜μœ„ ν”„λ‘œμ νŠΈμ˜ νŒŒμΌμ— /// referencesλ₯Ό 곡톡 νŒŒμΌμ— μΆ”κ°€ν•©λ‹ˆλ‹€. μ‹œλ„ν•΄λ³΄κ³  이것이 μ‹œλ‚˜λ¦¬μ˜€λ₯Ό ν•΄κ²°ν•˜λŠ”μ§€ λ˜λŠ” μ—¬μ „νžˆ λˆ„λ½ 된 뢀뢄이 μžˆλŠ”μ§€ μ•Œλ €μ£Όμ‹­μ‹œμ˜€.

μ‹€μ œλ‘œ μ €λŠ”μ΄ 두 개의 tsconfig.json νŒŒμΌμ„ μ‚¬μš©ν•˜κ³  μžˆλŠ”λ° WebStorm이 νŒŒμΌμ„ λ°œκ²¬ν•˜κ³  μžλ™μœΌλ‘œ μ»΄νŒŒμΌμ„ μ‹€ν–‰ν•©λ‹ˆλ‹€. μ •ν™•νžˆ λ§ν•˜λ©΄ λ°±μ—”λ“œ μ½”λ“œλŠ” common κ°œλ…μ„ μ‚¬μš©ν•˜λŠ” λŒ€μ‹  ν”„λŸ°νŠΈ μ—”λ“œ μ½”λ“œμ—μ„œ 일뢀 클래슀λ₯Ό κ°€μ Έ μ˜€μ§€λ§Œ λͺ¨λ‘ μ œλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

λ§ˆμΉ¨λ‚΄ 해결책을 μ–»μ—ˆμŠ΅λ‹ˆλ‹€.

λ‚΄ μ‘μš© ν”„λ‘œκ·Έλž¨ ꡬ쑰 :
-- μ•±/-app / client / (λ‚΄ ν΄λΌμ΄μ–ΈνŠΈ μΈ‘ μ†ŒμŠ€ μ½”λ“œ)-app / server / (λ‚΄ μ„œλ²„ μΈ‘ μ†ŒμŠ€ μ½”λ“œ)-app / build / (μ—¬κΈ°μ„œ jsλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€)-μ•± / λ…Έλ“œ λͺ¨λ“ˆ /-app / package.json-app / tsconfig.server.json-app / tsconfig.client.json

tsconfig.server.json의 λ‚΄μš© :
{ "compilerOptions": {..., "outDir": _ "build / server"_},"exclude": [ "node_modules", "client"]}

tsconfig.client.json의 λ‚΄μš© :
{ "compilerOptions": {..., "outDir": "λΉŒλ“œ / ν΄λΌμ΄μ–ΈνŠΈ"},"exclude": [ "node_modules", "server"]}


그런 λ‹€μŒ μ„œλ²„ μ†ŒμŠ€ μ½”λ“œλ₯Ό μ»΄νŒŒμΌν•˜λ €λ©΄ μ•± 루트 λ””λ ‰ν† λ¦¬μ—μ„œ λ‹€μŒ λͺ…령을 μ‚¬μš©ν•©λ‹ˆλ‹€.

tsc -p tsconfig.server.json


λ˜ν•œ 루트 μ•± λ””λ ‰ν† λ¦¬μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈ μ†ŒμŠ€ μ½”λ“œλ₯Ό μ»΄νŒŒμΌν•˜λ €λ©΄ λ‹€μŒμ„ μˆ˜ν–‰ν•˜μ‹­μ‹œμ˜€.

tsc -p tsconfig.client.json


ν΄λΌμ΄μ–ΈνŠΈ 및 μ„œλ²„ μ»΄νŒŒμΌμ„ λͺ¨λ‘ μ‹€ν–‰ν•˜κΈ° μœ„ν•΄ package.json에 λͺ…령을 μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

"슀크립트": {..., "tsc": "tsc --p tsconfig.server.json && tsc --p tsconfig.client.json", ...}

그런 λ‹€μŒ μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈλ₯Ό λͺ¨λ‘ μ»΄νŒŒμΌν•˜λ €λ©΄ 루트 μ•± λ””λ ‰ν† λ¦¬μ—μ„œ μ‹€ν–‰ν•©λ‹ˆλ‹€.

npm μ‹€ν–‰ tsc

이 의견이 당신을 λ„μšΈ 수 있기λ₯Ό λ°”λžλ‹ˆλ‹€ :-)

λ‚˜λŠ” 여기에 λ¬Έμ œκ°€ 무엇인지 μ΄ν•΄ν•˜μ§€ λͺ»ν•œλ‹€. 파일 이름이 λ‹€λ₯Έ ꡬ성을 지원할 μˆ˜μ—†λŠ” μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ? λ‹€λ₯Έ tsconfig νŒŒμΌμ„ ν¬ν•¨ν•˜κΈ° μœ„ν•΄ ν•˜μœ„ 폴더λ₯Ό λ§Œλ“œλŠ” 것은 고톡 μŠ€λŸ½μŠ΅λ‹ˆλ‹€.

ν•  수 μžˆμŠ΅λ‹ˆλ‹€. --p 인수 caλŠ” 파일 μ΄λ¦„μž…λ‹ˆλ‹€.

λ‹€λ₯Έ 파일 이름은 기본적으둜 Visual Studio typescript 컴파일러 ν™•μž₯ (CLI에 λŒ€ν•΄ μ–ΈκΈ‰ν•˜μ§€ μ•ŠμŒ)μ—μ„œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이λ₯Ό μˆ˜ν–‰ν•˜λŠ” μœ μΌν•œ 방법은 각 tsconfig.json을 더미 디렉토리에 λ„£κ³  files μ˜΅μ…˜μ„ μ‚¬μš©ν•˜μ—¬ μ›ν•˜λŠ” 타이프 슀크립트둜 λ‹€μ‹œ λ§ν¬ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

예λ₯Ό λ“€λ©΄

--src / target / search / tsconfig.json
--src / target / core / tsconfig.json
--src / target / users / tsconfig.json

target / search / tsconfig.json 은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

{
  "compilerOptions": {
    "outFile": "../../../build/app/search.js"
  },
  "files": [
    "../../src/common",
    "../../src/search"
  ]
}

그리고 λ‹€λ₯Έ 것듀은 λΉ„μŠ·ν•  κ²ƒμž…λ‹ˆλ‹€.

μ΄λ ‡κ²Œν•˜λ©΄ 3 개의 μžλ°” 슀크립트 파일이 μƒμ„±λ˜λ©°, 각 νŒŒμΌμ—λŠ” 고유 ν•œ ꡬ성이 ν•˜λ‚˜λ‘œ λ¬Άμ—¬ μžˆμŠ΅λ‹ˆλ‹€.

λ¬Όλ‘  Typescript 컴파일러 μžμ²΄μ™€ λ‹€λ₯Έ λ²ˆλ“€λ§ / μ΅œμ†Œν™” / νŒ¨ν‚€μ§• μ†”λ£¨μ…˜μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Typescript μ»΄νŒŒμΌλŸ¬κ°€ μ΅œμ ν™” μž‘μ—…μ„ 정말 잘 μˆ˜ν–‰ν•œλ‹€λŠ” κ²ƒλΏμž…λ‹ˆλ‹€. 이것이 Typescript μ‚¬μš©μ— κ°€μž₯ 큰 μž₯점 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€.

λ”°λΌμ„œ 단일 tsconfig.json이 tsconfig의 λ°°μ—΄λ‘œ λ³€κ²½ν•˜μ—¬ μ—¬λŸ¬ ꡬ성을 지원할 수 μžˆλ‹€λ©΄ 쒋을 κ²ƒμž…λ‹ˆλ‹€.

[
  {
    "compilerOptions": {
      "outFile": "../../build/search.js"
    },
    "files": [
      "src/common",
      "src/search"
    ],
    "compileOnSave": true
  },
  {
    "compilerOptions": {
      "outFile": "../../build/core.js"
    }
    "files": [
      "src/common",
      "src/core"
    ],
    "compileOnSave": true
  }
]

이것이이 문제의 이후 μ˜κ²¬μ—μ„œ μš”μ²­ 된 κ²ƒμ²˜λŸΌ λ“€λ¦¬μ§€λ§Œ, μ›λž˜ λ¬Έμ œλŠ” 상속 및 ꡬ성 μž¬μ •μ˜μ— κ΄€ν•œ 것이 μ—ˆμŠ΅λ‹ˆλ‹€.

@mhegazy @bartq tsc λͺ…λ ΉμœΌλ‘œ μž‘λ™μ‹œν‚¬ 수 μ—†μŠ΅λ‹ˆλ‹€.
λ‹€μŒκ³Ό 같은 디렉토리 ꡬ쑰가 μžˆμŠ΅λ‹ˆλ‹€.

-- app/
-- app/server  -- here I want es6/commonjs
-- app/server/tsconfig.json
-- app/client    -- here I want es6/es6 
-- app/client/tsconfig.json
-- app/tsconfig.json

κ·ΈλŸ¬λ‚˜ tsc μ‹€ν–‰ν•˜λ©΄ app/tsconfig.json 만 μ‚¬μš©λ˜λ©° λ‚˜λ¨Έμ§€λŠ” λ¬΄μ‹œλ©λ‹ˆλ‹€. VSCodeμ—μ„œ μž‘λ™ν•˜λ„λ‘ λ…Έλ ₯ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

@tomitrescak μ €λŠ” WebStorm을 μ‚¬μš©ν•˜κ³  있으며 κ°€μž₯ κ°€κΉŒμš΄ tsconfig.json을 μ°Ύμ•„μ„œ νŒŒμΌμ„ νŽΈμ§‘ ν•  λ•Œ μ‚¬μš©ν•  μˆ˜μžˆμ„λ§ŒνΌ 지λŠ₯μ μž…λ‹ˆλ‹€. μ•„λ§ˆλ„ μ—¬λŸ¬ tsconfig.json의 κ°μ‹œλ₯Ό μ§€μ›ν•˜λŠ” cmd 도ꡬ가 없을 κ²ƒμž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ FB μ›ŒμΉ˜ 맨을 μ‚¬μš©ν•˜μ—¬ 둀아웃 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

예, VS μ½”λ“œμ—μ„œ 이와 같은 것을 κ°–κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. ν„°λ―Έλ„μ—μ„œ μ»΄νŒŒμΌμ„ μ‹€ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 잘 μž‘λ™ν•©λ‹ˆλ‹€. VS CodeλŠ” μ–΄μ¨Œλ“  였λ₯˜λ₯Ό μ˜¬λ°”λ₯΄κ²Œ μ‹λ³„ν•©λ‹ˆλ‹€.

μ—¬λŸ¬ ꡬ성이 쒋을 κ²ƒμž…λ‹ˆλ‹€. μ €λŠ” React-Native ν”„λ‘œμ νŠΈμ—μ„œ μΌν•˜κ³  있으며 기본적으둜 두 가지 λΉŒλ“œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

  1. λ‚΄ React-Native ν”„λ‘œμ νŠΈμ˜ 슀크립트
  2. React-Native WebViews (차트)λ₯Ό μœ„ν•΄ HTMLμ—μ„œ μ‚¬μš©λ˜λŠ” 슀크립트.

ꡬ성 상속이 TS 2.1에 μΆ”κ°€λ˜μ—ˆμœΌλ©° 였늘 typescript@next μ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ https://github.com/Microsoft/TypeScript/issues/9876 을 μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€. 이λ₯Ό 톡해 "λ§ˆμŠ€ν„°"tsconfig.json을 κ°€μ§ˆ 수 있으며 μ—¬κΈ°μ—μ„œ ꡬ성을 μƒμ†ν•˜λŠ” 것을 μž¬μ •μ˜ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ—¬μ „νžˆ μ—¬λŸ¬ tsconfig.json νŒŒμΌμ„ λ§Œλ“€μ–΄μ•Όν•˜μ§€λ§Œ IDEμ—μ„œμ΄ νŒŒμΌμ„ μ„ νƒν•΄μ•Όν•©λ‹ˆλ‹€.

λ‹€μŒ 디렉터리 ꡬ쑰가 μžˆμŠ΅λ‹ˆλ‹€.

β”œβ”€β”€ examples
β”‚   β”œβ”€β”€ files...
β”‚   └── tsconfig.json
β”œβ”€β”€ src
β”‚   └──files...
└── tsconfig.json

루트 tsconfig.json :

{
  "compilerOptions": {
    "target": "es2015",
    "module": "commonjs",
    "moduleResolution": "node",
    "outDir": "dist",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false,
    "declaration": true,
    "allowJs": false
  },
  "include": [
    "./src"
  ],
  "compileOnSave": false,
  "buildOnSave": false,
  "atom": { "rewriteTsconfig": false }
}

examples/tsconfig.json 값은 λ‹€μŒμ„ μ œμ™Έν•˜κ³  λ™μΌν•©λ‹ˆλ‹€.

  "include": [
    "./hello-world"
  ],

λ‚΄κ°€ ν•  λ•Œ :

cd examples
tsc

λ‹€μŒμ„ μ»΄νŒŒμΌν•©λ‹ˆλ‹€.

β”œβ”€β”€ examples
β”‚   β”œβ”€β”€ dist
β”‚   β”‚   β”œβ”€β”€ examples
β”‚   β”‚   └── src
β”‚   β”œβ”€β”€ files...
β”‚   └── tsconfig.json
β”œβ”€β”€ src
β”‚   └──  files...
└── tsconfig.json

( dist 잘λͺ»λœ μ™ΈλΆ€ 폴더 src 및 루트 폴더 λ‚΄μ—μ„œ 컴파일 됨)

도움 μ•ˆ 함 ( examples/tsconfig.json ) :

  "exclude": [
    "../src"
  ],

λ‚΄κ°€ λ„λŒ€μ²΄ β€‹β€‹λ­˜ 잘λͺ»ν•˜κ³ μžˆλŠ” κ²λ‹ˆκΉŒ?

문제λ₯Ό λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€. λ‚΄ examples/hello-world/any-file*.ts 에이 κ°€μ Έ 였기 :

import { SomeClass } from '../../src';

μœ„μ˜ λ¬Έμ œμ— μ„€λͺ… 된 μƒμ‚°λ¬Όμž…λ‹ˆλ‹€. λ‹€μŒ κ°€μ Έ μ˜€κΈ°κ°€ μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

import { SomeClass } from '../../';

κ·ΈλŸ¬λ‚˜ typescript의 μ§€μ‹œλ¬Έ include κ°€ μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•ŠλŠ” μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

λ‚˜λŠ” 그것을 μž‘λ™μ‹œν‚¬ 수 μ—†λ‹€
λ™μΌν•œ 폴더에 tsconfig.json이 μžˆμ§€λ§Œ " κ²½κ³  : μƒμœ„ tsconfig.json을 찾을

@zhukovka λ‘œμ»¬μ—μ„œ μ‹€ν–‰ν•  μˆ˜μžˆλŠ” 독립 μ‹€ν–‰ ν˜• μž¬ν˜„μœΌλ‘œ μƒˆ 문제λ₯Ό κΈ°λ‘ν•΄μ£Όμ„Έμš”.

@RyanCavanaugh 였. κ³ λ§ˆμ›Œ, μ•Œμ•„ λƒˆμ–΄
λ¬Έμ œλŠ” ν…ŒμŠ€νŠΈ 폴더 (tsconfig.json ν¬ν•¨λ˜μ§€ μ•ŠμŒ)μ—μ„œ ν•˜λ‚˜μ˜ νŒŒμΌμ„ μ—΄κ³  'src'폴더 (tsconfig.json 포함)μ—μ„œ 두 번째 νŒŒμΌμ„ μ—° κ²½μš°μ—λ§Œ μž¬ν˜„λ©λ‹ˆλ‹€.
ν…ŒμŠ€νŠΈ ν΄λ”μ˜ νŒŒμΌμ€ src ν΄λ”μ˜ νŒŒμΌμ„ κ°€μ Έμ˜΅λ‹ˆλ‹€. 이 경우 src ν΄λ”μ˜ νŒŒμΌμ—λŠ” 'λΆ€λͺ¨ tsconfig.json'이 ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

@RyanCavanaugh, μ—¬λŸ¬ 가지 tsconfig.json의 μ»΄νŒŒμΌμ— λŒ€ν•œ μ§€μ›μ€ν•˜κ³  싢은 것을 κ°œλ°œμžκ°€ 될 계속할 κ²ƒμœΌλ‘œ 보인닀. 제 κ²½μš°μ—λŠ” 일반적으둜 생성 된 좜λ ₯ 파일의 μœ„μΉ˜λ₯Ό β€‹β€‹λ³€κ²½ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. μ½”λ“œ 생성이 κΈ°μ‘΄ paths 맀핑과 같은 κ²ƒμœΌλ‘œ μ œμ–΄λ˜μ–΄ 생성 된 μ½”λ“œλ₯Ό μ†ŒμŠ€μ™€ λ‹€λ₯΄κ²Œ λ ˆμ΄μ•„μ›ƒ ν•  수 μžˆλ‹€λ©΄ μ•„λ§ˆλ„ μ—¬λŸ¬ ν”„λ‘œμ νŠΈμ˜ ν•„μš”μ„±μ΄ 쀄어듀 것 κ°™μŠ΅λ‹ˆλ‹€.

λ‚΄ μ‚¬μš© μ‚¬λ‘€λŠ” 더 μ—„κ²©ν•œ μœ ν˜• 검사 κ·œμΉ™μ„ κ²¬λ”œ μˆ˜μ—†λŠ” λŒ€κ·œλͺ¨ λ ˆκ±°μ‹œ μ½”λ“œλ² μ΄μŠ€κ°€ 있으며 μ—„κ²©ν•œ 검사가 ν™œμ„±ν™” 된 μƒˆλ‘œμš΄ μ½”λ“œλ² μ΄μŠ€μ—μ„œ μ‚¬μš©ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. 그리고 λ ˆκ±°μ‹œ μ½”λ“œλ₯Ό 내보내기λ₯Ό μœ„ν•΄ μœ ν˜•μ˜ 이름을 μ§€μ •ν•˜λŠ” 데 ν•„μš”ν•œ λͺ¨λ“  μœ ν˜•μ„ κ°€μ Έ μ˜€μ§€ μ•ŠλŠ” 백만 개의 μΌ€μ΄μŠ€κ°€ 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€ (# 9944). λ”°λΌμ„œ λ ˆκ±°μ‹œ μ½”λ“œλ² μ΄μŠ€λ₯Ό μƒˆ μ½”λ“œλ² μ΄μŠ€μ— μΆ”κ°€ν•˜κ³  μ‹Άμ§€λ§Œ λŠμŠ¨ν•œ κ·œμΉ™μ— 따라 μ»΄νŒŒμΌλ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이것은 2 개의 λ‹€λ₯Έ 컴파일 단계가 될 수 μ—†μŠ΅λ‹ˆλ‹€. μ»΄νŒŒμΌλŸ¬κ°€ νŠΉμ • 디렉토리 μ•„λž˜μ˜ μ†ŒμŠ€ νŒŒμΌμ— λŒ€ν•΄ μž‘μ—… ν•  λ•Œ laxer κ·œμΉ™μ„ μ‚¬μš©ν•΄μ•Όν•©λ‹ˆλ‹€.

μ €μ—κ²Œ μ‚¬μš© μ‚¬λ‘€λŠ” λ…Έλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‹€ν–‰λ˜κ³  commonjs λͺ¨λ“ˆλ‘œ μ»΄νŒŒμΌν•΄μ•Όν•˜λŠ” μ €μž₯μ†Œμ˜ 일뢀λ₯Ό κ°€μ§€κ³ μžˆλŠ” 반면 λ‹€λ₯Έ 뢀뢄은 ES6μ—μ„œ 트리 쉐이킹을 ν™œμ„±ν™”ν•˜κΈ° μœ„ν•΄ ES6 λͺ¨λ“ˆλ‘œ μ»΄νŒŒμΌν•΄μ•Όν•©λ‹ˆλ‹€. κ²½ν—˜μ΄ 쒋지 μ•ŠμŠ΅λ‹ˆλ‹€. 제 κ²½μš°μ—λŠ” TS_NODE_PROJECT ν™˜κ²½ λ³€μˆ˜λ‘œ 해킹이 많이 λ°œμƒν•©λ‹ˆλ‹€. λ‚΄κ°€ κ²°κ΅­ ν”„λ‘œμ νŠΈλ₯Ό λ°”κΏ€ λ•Œ 그것을 μœ μ§€ν•˜λŠ” λ‹€μŒ μ‚¬λžŒμ΄ 지μ˜₯을 ν˜Όλž€μŠ€λŸ½κ²Œ ν•  μˆ˜μžˆλŠ” 것 κ°™λ‹€.

λ‚˜λŠ” μ—¬μ „νžˆ 이것이 ν•΄κ²°λ˜λŠ” 것을보고 μ‹Άλ‹€. ν”„λ‘œμ νŠΈ λ‚΄μ—μ„œ λͺ¨λ“ˆ λ‹Ή λ‹€λ₯Έ tsconfig.json 파일이 ν•„μš”ν•œ λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ˜ 경우 큰 도움이 될 κ²ƒμž…λ‹ˆλ‹€.

@Robinfr extends κΈ°λŠ₯으둜 ν•΄κ²°λ˜μ§€ μ•ŠλŠ” 것은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

κ·Έκ²Œν–ˆλ‹€. λ‚˜λŠ”μ΄ 포슀트 이후에 그것에 λŒ€ν•΄ μ•Œκ²Œλ˜μ—ˆλ‹€. κ·ΈλŸ¬λ‚˜ ν•œ 가지 μ£Όλͺ©ν•  점은 include λ₯Ό kκ°€ μ›ΉνŒ©μ„ ν†΅κ³Όν•˜κΈ° λ•Œλ¬Έμ— 일반적으둜 ν•„μš”ν•˜μ§€ μ•Šμ€ 파일둜 μ„€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ μž‘λ™ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

Op 15 9 μ›”. 2017 9:24 am schreef Kitson Kelly [email protected] :

@Robinfr https://github.com/robinfr ν™•μž₯ κΈ°λŠ₯은 λ¬΄μ—‡μž…λ‹ˆκΉŒ https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#configuration-inheritance-with-extends κ°€ ν•΄κ²°λ˜μ§€ μ•ŠμŠ΅λ‹ˆκΉŒ?

β€”
당신이 μ–ΈκΈ‰ λ˜μ—ˆκΈ° λ•Œλ¬Έμ— 이것을 λ°›κ³  μžˆμŠ΅λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHub https://github.com/Microsoft/TypeScript/issues/3645#issuecomment-329703706 μ—μ„œ λ³΄κ±°λ‚˜ https://github.com/notifications/unsubscribe-auth/AD90FLZKcHMJeFU0osJroT_yawlC1oTIks5siiZFgaJpZM4FMc8w μŠ€λ ˆλ“œλ₯Ό μŒμ†Œκ±°ν•©λ‹ˆλ‹€.

@kitsonk ν™•μž₯은 잘 μž‘λ™ν•˜μ§€λ§Œ 잘λͺ»ν•˜μ§€ μ•ŠμœΌλ©΄ 두 ꡬ성 λͺ¨λ‘μ—μ„œ νŠΉμ • μ„€μ • (λ‚΄ build 및 node_modules 폴더 μ œμ™Έ)을 λ°˜λ³΅ν•΄μ•Όν•©λ‹ˆλ‹€. λ‚˜μ—κ²Œ κ°€μž₯ 큰 고톡은 λ‚΄ λͺ¨λ“  도ꡬ가 μ–΄λ–€ ꡬ성 파일이 μ˜¬λ°”λ₯Έ ꡬ성 νŒŒμΌμΈμ§€ μ•Œκ³  μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€ (일반적으둜 TS_NODE_PROJECT ν™˜κ²½ λ³€μˆ˜μ™€ 같은 λ°©λ²•μœΌλ‘œ μ‚¬μš©ν•©λ‹ˆλ‹€. λ‹€λ₯Έ ν•˜λ‚˜λŠ” 두 개의 tsconfigκ°€μžˆλŠ” ν”„λ‘œμ νŠΈλ₯Ό μ—΄ λ•Œ). VS.code. μ‚¬μš©ν•  ν”„λ‘œμ νŠΈ νŒŒμΌμ„ VS에 μ•Œλ¦΄ μˆ˜μžˆλŠ” 방법이 μ—†μœΌλ©° ν•΄λ‹Ή tsconfig의 ν•΄λ‹Ή νŒŒμΌμ— λŒ€ν•œ 섀정이 λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— 일뢀 파일 였λ₯˜μ— λŒ€ν•΄ μ˜¬λ°”λ₯΄κ²Œ 밑쀄이 ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ (예 : tsconfig.build.json λ“±).

@voy λΉŒλ”©μ— λ‹€λ₯Έ tsconfigκ°€μžˆλŠ” 이유λ₯Ό 물어봐도 λ κΉŒμš”? λ‚΄κ°€ 이해 ν•œ ν•œ VSCodeλŠ” νŽΈμ§‘μ€‘μΈ νŒŒμΌμ— κ°€μž₯ κ°€κΉŒμš΄ tsconfig 파일 ( tsconfig.json )을 μ‚¬μš©ν•©λ‹ˆλ‹€. μ§€κΈˆκΉŒμ§€ λ‚΄κ°€ 가진 μœ μΌν•œ λ¬Έμ œλŠ” VSCodeκ°€ ꡬ성을 μ‚¬μš©ν•˜κΈ° μ‹œμž‘ν•˜κΈ° 전에 λ£¨νŠΈμ— tsconfig 파일이 μžˆμ–΄μ•Όν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

@Robinfr ν™•μ‹€ν•©λ‹ˆλ‹€. λ™μΌν•œ μ €μž₯μ†Œμ— webpack & babel을 μ‚¬μš©ν•˜μ—¬ 처리되고 ES6 λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜μ—¬ 트리 쉐이킹을 ν™œμ„±ν™”ν•˜λŠ” 파일이 μžˆμŠ΅λ‹ˆλ‹€. λ‹€λ₯Έ νŒŒμΌμ€ λΉŒλ“œ ν”„λ‘œμ„ΈμŠ€μ˜ 일뢀이며 λ…Έλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‹€ν–‰λ˜λ―€λ‘œ κ°€μ Έ μ˜€κΈ°κ°€ ν•„μš”μ— 맞게 λ³€ν™˜λ˜μ–΄μ•Όν•©λ‹ˆλ‹€. μ–΄λ–»κ²Œ ν•΄κ²°ν•  수 μžˆμ„μ§€ λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

@voy λŠ” ν•΄λ‹Ή νŒŒμΌμ„ λ³„λ„μ˜ 폴더에 λ³΄κ΄€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆκΉŒ? 예 : λͺ¨λ“  Babel 및 webpack 파일 용 폴더 1 개, λ…Έλ“œ 파일 용 폴더 1 개. 그런 λ‹€μŒ 각 폴더에 λŒ€ν•΄ tsconfig.json을 κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. 그게 νš¨κ³Όκ°€ μ—†μ„κΉŒμš”?

@Robinfr 은 μ΄μƒμ μ΄μ§€λ§Œ ν˜„μ‹€ μ„Έκ³„μ—μ„œ 항상 κ°€λŠ₯ν•˜μ§€λŠ” μ•Šλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λͺ¨λ“  ꡬ성 νŒŒμΌλ„ typescriptκ°€λ˜κ³ , λͺ¨λ“  TypeScript μ½”λ“œλ² μ΄μŠ€μ™€ λ™μΌν•œ κ·œμΉ™μ— 따라 컴파일 및 λ¦°νŒ…λ˜κΈ°λ₯Ό μ›ν•˜λ©° 일뢀 νŒŒμΌμ€ ν”„λ‘œμ νŠΈμ˜ λ£¨νŠΈμ— μžˆμ–΄μ•Όν•©λ‹ˆλ‹€. 심볼릭 링크λ₯Ό ν•  수 μžˆμ§€λ§Œ λ•Œλ‘œλŠ” λ‹€λ₯Έ λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. κ·Έλž˜μ„œ μ’€ 더 μœ μ—°ν•œ 것이 도움이 될 것이라고 μƒκ°ν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰