ΠΡΠΈΠ²Π΅Ρ! ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ tsconfig.json
ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠΎ Π΅ΡΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄Π° tsconfig.json
Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² tsconfig.json
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ
Π² ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°Ρ
, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ / Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°? ΠΠ°ΠΊ .gitignore
.
ΠΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π² ΡΡΠ΅Π΄Π΅ node
. Π’Π°ΠΊΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² (Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ), Π½ΠΎ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡΡΡ Π² ΠΎΠ΄ΠΈΠ½ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ°ΠΉΠ».
ΠΡΠΈΠ²Π΅Ρ @lazutkin. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ, Ρ ΠΎΡΡ Ρ ΠΏΡΠΎΡΡΠΎ Ρ ΠΎΡΡ ΡΠ²ΡΠ·Π°ΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ # 2869, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½Π° ΠΎΡΡΠ°ΡΡΠΈ ΡΠ²ΡΠ·Π°Π½Π°.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΡΠ°ΠΉΠ» tsconfig.json, Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ Π²Π°ΠΌΠΈ ΠΏΠ°ΠΏΠΊΠ΅, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ tsc
Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΏΠ°ΠΏΠΊΠ΅. ΠΏΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Ρ tsconfig.json, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²ΡΠ±ΡΠ°Π½ ΡΠ°Π½ΡΡΠ΅, ΡΠ΅ΠΌ Π²ΠΎ Π²Π½Π΅ΡΠ½Π΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅.
Π― Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ / ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ tsconfig.json.
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² tsconfig Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ Π΄Π»Ρ ΠΊΡΡΠΏΠ½ΡΡ
ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅: ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° tsc Π½Π°Ρ
ΠΎΠ΄ΠΈΡ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» tsconfig Π² ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, tsc ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π·Π΄Π΅ΡΡ ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ tsc Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ tsconfig.
@Eisenspalter ΡΡΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° Π·Π°Π΄Π°Π½ΠΈΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΡΠ±ΠΎΡΠΊΠΈ, ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ grunt, gulp ΠΈΠ»ΠΈ msbuild.
@mhegazy Π― ΡΠΎΠ³Π»Π°ΡΠ΅Π½ Ρ @Eisenspalter, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ ΠΎΠ±Π° Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π½Π΅ ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ, Π° ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠΎΠ², ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ±ΠΎΡΠΊΠΎΠΉ. ΠΠ° Π²ΡΠ΅Ρ
ΡΡΠΈΡ
ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ
ΡΡΠ°ΠΏΠ°Ρ
Π½Π°ΠΌ Π½ΡΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ typescript
Π²ΠΊΠ»ΡΡΠ°Ρ intellisense, ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠΈΠΏΠΎΠ² ΠΈ Ρ. Π. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ» ΡΠ°Π½Π΅Π΅, Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ
ΡΠ°ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΌΡ Ρ
ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π²ΡΡ
ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ» ΠΈ Ρ. Π΄.), ΠΈ Π·Π΄Π΅ΡΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ tsconfig.
@mhegazy ΠΠΎΡΠ΅ΠΌΡ Π·Π°ΠΊΡΡΠ»ΠΈΡΡ? ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΎΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ½ΠΎΠ²Π°.
ΡΠ΅Π³ΠΎΠ΄Π½Ρ Ρ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ tsconfig, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°ΡΡΠΈΠΉΡΡ Π½Π°Π±ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ². ΡΠ°ΠΊ ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ Π² srctsconfig.json, ΠΎΠ΄ΠΈΠ½ Π² teststsconfig.json ΠΈ Ρ. Π΄. ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ / tools Π½Π°ΠΉΠ΄Π΅Ρ ΡΠ°ΠΉΠ», ΠΏΡΠΎΠΉΠ΄Ρ Π²Π²Π΅ΡΡ ΠΏΠΎ Π΄Π΅ΡΠ΅Π²Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ. ΡΠ°ΠΊ ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΡΠ΅ΡΠΈΠΉ ΡΠ°ΠΉΠ» Π² ΠΊΠΎΡΠ½Π΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΉΠΌΠ°ΡΡ Π²ΡΠ΅.
ΠΡΠ΅ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ΅ ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ IDE. ΠΈΡΡ ΠΎΠ΄Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΡΠ°ΠΉΠ»Ρ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ. Π― Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΠ°ΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΅Π½Π½ΠΎΡΡΠΈ, ΡΡΠΎΠ±Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ.
ΠΠΎ Π²ΡΠΎΡΠΎΠΌΡ Π²ΠΎΠΏΡΠΎΡΡ:
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° tsc Π½Π°Ρ ΠΎΠ΄ΠΈΡ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» tsconfig Π² ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, tsc ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π·Π΄Π΅ΡΡ ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ tsc ΡΠΎ ΡΠ²ΠΎΠΈΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ tsconfig.
ΠΠ°ΠΊ Ρ ΡΠΏΠΎΠΌΠΈΠ½Π°Π» ΡΠ°Π½Π΅Π΅, tsconfig.json ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² tsc.js / tsc.exe, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠ², Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΠ°ΠΉΠ²Π΅Ρ ΡΠ±ΠΎΡΠΊΠΈ.
@lazutkin ΠΈ @Eisenspalter ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π° Π²ΠΎΠΏΡΠΎΡΡ
@mhegazy
ΠΠ΅ ΡΠ΄Π°Π»ΠΎΡΡ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² tsconfig.json. ΠΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Ρ TypeScript 1.7.3 ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΉΠ» tsconfig.json, ΠΊΠΎΡΠΎΡΡΠΉ, ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ, Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ (ΠΈΠ»ΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅) ΠΏΡΠΎΠ΅ΠΊΡΠ°.
@Ziink, ΠΌΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π²ΡΡΠ΅ Π½Π΅ ΠΊΠ°ΡΠ°Π»ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ tsconfigs Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅. ΡΠ΅ΡΡ ΡΠ»Π° ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ / ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°Ρ , ΠΊΠ°ΠΆΠ΄ΡΠΉ Ρ Π΄ΡΡΠ³ΠΈΠΌ tsconfig. Π²ΠΎΡ ΠΊΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ ts, ΡΠΌ. https://github.com/Microsoft/TypeScript/tree/master/src , ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΏΠ°ΠΏΠΊΠ° Π² src ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉ tsconfig.json
Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° TypeScript, ΠΈ Ρ Ρ ΠΎΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΎΠ±ΠΎΠΈΠΌΠΈ:
/browser
) Ρ ES5 / AMD ΠΈserver
) Ρ CommonJS ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ (ΠΈ async / await Π² TS).ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠΈΡ
ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠΊΠ°ΠΆΠ΅ΠΌ, Π² ΠΏΠ°ΠΏΠΊΠ΅ ( /common
), ΠΈ Π΅ΡΡΡ ΠΈΠΌΠΏΠΎΡΡ ΠΈΠ· common
Π² browser
ΠΈ server
.
ΠΠ°ΠΊ Ρ ΠΌΠΎΠ³Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Ρ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ IDE, Π²ΡΠ΅Ρ
ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ Ρ. Π.? ΠΠ΅ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ Π΄ΠΈΡΠΊΡΡΡΠΈΡ ΠΎΡΠ²Π΅ΡΠΈΠ»Π° Π½Π° ΠΌΠΎΠΈ ΡΠΎΠΌΠ½Π΅Π½ΠΈΡ.
@bartq Π TS 1.8 Ρ Π±Ρ ΡΠΎΠ·Π΄Π°Π» Π΄Π²Π° ΡΠ°ΠΉΠ»Π° tsconfig, ΠΎΠ΄ΠΈΠ½ Π΄Π»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΈ ΠΎΠ΄ΠΈΠ½ Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ» /// ΡΡΡΠ»ΠΊΠΈ Π² Π²Π°ΡΠΈΡ ΡΠ°ΠΉΠ»Π°Ρ Π² ΠΎΠ±ΠΎΠΈΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ΠΊ ΠΎΠ±ΡΠΈΠΌ. ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΈ Π΄Π°ΠΉΡΠ΅ Π½Π°ΠΌ Π·Π½Π°ΡΡ, ΠΎΡΠ½ΠΎΡΠΈΡΡΡ Π»ΠΈ ΡΡΠΎ ΠΊ ΡΡΠ΅Π½Π°ΡΠΈΡ ΠΈΠ»ΠΈ Π²ΡΠ΅ Π΅ΡΠ΅ Π΅ΡΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΈΠ΅ ΡΠ°ΡΡΠΈ.
Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΈ Π΄Π²Π° ΡΠ°ΠΉΠ»Π° tsconfig.json
, WebStorm ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΡ
ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ. ΠΡΠ»ΠΈ Π±ΡΡΡ ΡΠΎΡΠ½ΡΠΌ, Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΊΠΎΠ΄ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΈΠ· Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° (Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ common
), Π½ΠΎ Π²ΡΠ΅ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ-ΡΠΎ Ρ ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
ΠΌΠΎΡ ΡΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
- ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /- app / client / (ΠΌΠΎΠΉ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°)- app / server / (ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΌΠΎΠ΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°)- app / build / (Π³Π΄Π΅ Ρ Π³Π΅Π½Π΅ΡΠΈΡΡΡ js)- ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ / ΡΠ·Π»Ρ-ΠΌΠΎΠ΄ΡΠ»ΠΈ /- app / package.json- ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ / tsconfig.server.json- ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ / tsconfig.client.json
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ tsconfig.server.json:
{"compilerOptions": {..., "outDir": _ "build / server" _},"exclude": ["node_modules", "client"]}
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ tsconfig.client.json:
{"compilerOptions": {..., "outDir": "build / client"},"exclude": ["node_modules", "server"]}
ΠΠ°ΡΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Ρ Ρ ΠΎΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠ΅ΡΠ²Π΅ΡΠ°, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ· ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
Π ΡΡΠΎΠ±Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ· ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°, Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² package.json:
"scripts": {..., "tsc": "tsc --p tsconfig.server.json && tsc --p tsconfig.client.json", ...}
ΠΠ°ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΠ΅ΡΠ²Π΅Ρ, ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ, Ρ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΡΠΊΠ°Ρ ΡΡΠΎ ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡΡ :-)
Π― Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, Π² ΡΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. ΠΠΎΡΠ΅ΠΌΡ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΠΈ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²? ΠΠΎΠ»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΏΠ°ΠΏΠΊΠΈ Π’ΠΠΠ¬ΠΠ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°ΠΉΠ» tsconfig.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅. ΠΡΠ³ΡΠΌΠ΅Π½Ρ --p ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ°ΠΉΠ»Π°.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ°Π·Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΌΠ°ΡΠΈΠ½ΠΎΠΏΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° Visual Studio (Π½Π΅ Π³ΠΎΠ²ΠΎΡΡ ΡΠΆΠ΅ ΠΎ CLI) ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ - ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ tsconfig.json Π² ΡΠΈΠΊΡΠΈΠ²Π½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΈ ΡΠ²ΡΠ·Π°ΡΡ Π΅Π³ΠΎ Ρ Π½ΡΠΆΠ½ΡΠΌΠΈ Π²Π°ΠΌ Π½Π°Π±ΠΎΡΠ°ΠΌΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° files
.
Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
--src / ΡΠ΅Π»Ρ / ΠΏΠΎΠΈΡΠΊ / tsconfig.json
--src / ΡΠ΅Π»Ρ / ΡΠ΄ΡΠΎ ββ/ tsconfig.json
--src / ΡΠ΅Π»Ρ / ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ / tsconfig.json
target / search / tsconfig.json Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
{
"compilerOptions": {
"outFile": "../../../build/app/search.js"
},
"files": [
"../../src/common",
"../../src/search"
]
}
Π ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π±ΡΠ»ΠΈ Π±Ρ ΠΏΠΎΡ ΠΎΠΆΠΈ.
ΠΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ 3 ΡΠ°ΠΉΠ»Π° javascript, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΡ Π² ΠΎΠ΄ΠΈΠ½.
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ / ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ / ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ, ΡΠ΅ΠΌ ΡΠ°ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Typescript.
ΠΡΠΎΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Typescript Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ ΠΎΡΠΎΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ - ΡΡΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ°ΠΌΡΡ Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Typescript.
ΠΡΠ°ΠΊ, Π±ΡΠ»ΠΎ Π±Ρ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΎΠ΄ΠΈΠ½ tsconfig.json ΠΌΠΎΠ³ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ, ΠΏΡΠΎΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² Π΅Π³ΠΎ Π½Π° ΠΌΠ°ΡΡΠΈΠ² tsconfigs:
[
{
"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 ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΏΡΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°ΠΉΠ»Π°. ΠΠ΅ΡΠΎΡΡΠ½ΠΎ, Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° cmd, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΡΠΌΠΎΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² tsconfig.json. Π Π°Π·Π²Π΅ΡΠ½ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠΎΡΠΎΠΆΠ° FB.
ΠΠ°, Ρ Π±Ρ Ρ ΠΎΡΠ΅Π» ΠΈΠΌΠ΅ΡΡ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ Π² VS Code. Π― Π·Π°ΠΏΡΡΠΊΠ°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅. Π’Π°ΠΊΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. VS Code Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΡΠ»ΠΎ Π±Ρ Π·Π΄ΠΎΡΠΎΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ. Π― ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π°Π΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ React-Native, ΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π΄Π²Π΅ ΡΠ±ΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Ρ ΠΎΡΡ ΡΠ΄Π΅Π»Π°ΡΡ:
ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π±ΡΠ»ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² 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 '../../';
ΠΠΎ ΠΏΠΎΡΠ΅ΠΌΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° ΠΌΠ°ΡΠΈΠ½ΠΎΠΏΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° include
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ?
Π― Π½Π΅ ΠΌΠΎΠ³Ρ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ
ΠΠ½ Π½Π°ΡΡΠ°ΠΈΠ²Π°Π΅Ρ Π½Π° Β« ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: Π½Π΅ ΡΠ΄Π°Π΅ΡΡΡ Π½Π°ΠΉΡΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ tsconfig.jsonΒ», Ρ
ΠΎΡΡ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ tsconfig.json Π² ΡΠΎΠΉ ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΠ΅, Π½Π΅ Π·Π½Π°Ρ, ΡΡΠΎ Ρ ΡΡΠΈΠΌ Π΄Π΅Π»Π°ΡΡ.
@zhukovka, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ Π½ΠΎΠ²ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΌ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ
@RyanCavanaugh Π. ΡΠΏΠ°ΡΠΈΠ±ΠΎ Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΡΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΉΠ», ΠΎΡΠΊΡΡΡΡΠΉ ΠΈΠ· ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ (ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ tsconfig.json), Π° Π²ΡΠΎΡΠΎΠΉ ΡΠ°ΠΉΠ» ΠΎΡΠΊΡΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ 'src' (ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ tsconfig.json)
Π° ΡΠ°ΠΉΠ» ΠΈΠ· ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠ°ΠΉΠ» ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ src. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°ΠΉΠ» ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ src Π½Π΅ Π²ΠΈΠ΄ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ Β«ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ tsconfig.jsonΒ»
@RyanCavanaugh , ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ°Π·Π½ΡΠΌΠΈ tsconfig.json, ΠΏΠΎΡ
ΠΎΠΆΠ΅, ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Ρ
ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΈΠΌΠ΅ΡΡ. Π ΠΌΠΎΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΌΠ΅ΡΡΠ° ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² Π²ΡΠ²ΠΎΠ΄Π°. ΠΠΎΡ
ΠΎΠΆΠ΅, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π±Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Π³ΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ paths
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π³ΠΎ ΠΌΠ½Π΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ ΠΌΠΎΠΉ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈΠ½Π°ΡΠ΅, ΡΠ΅ΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
ΡΠΌΠ΅Π½ΡΡΠΈΠ»Π°ΡΡ Π±Ρ.
ΠΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠ°Ρ ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ Π±Π°Π·Π°, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠΎΠ³ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΈΠΏΠΎΠ², ΠΈ Ρ Ρ ΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π² Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ _Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ_ ΡΡΡΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΠΈ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΉ ΠΊΠΎΠ΄ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ Π½Π΅Π΅ Π΅ΡΡΡ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° Π½Π΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ Π²ΡΠ΅ ΡΠΈΠΏΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² Π΄Π»Ρ Π΅Π΅ ΡΠΊΡΠΏΠΎΡΡΠ° (# 9944). ΠΠΎΡΡΠΎΠΌΡ Ρ Ρ ΠΎΡΡ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΡΡ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ Π±Π°Π·Ρ Π² Π½ΠΎΠ²ΡΡ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ Π±Π°Π·Ρ, Π½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ»Π°Π±ΡΠΌΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ. ΠΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ 2 ΡΠ°Π·Π½ΡΡ ΡΡΠ°ΠΏΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ; ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»Π°Π±ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°.
ΠΠ»Ρ ΠΌΠ΅Π½Ρ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ - ΡΡΠΎ ΡΠ°ΡΡΡ ΡΠ΅ΠΏΠΎ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ node ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π° Π΄ΠΎ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ commonjs, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π΄ΡΡΠ³Π°Ρ ΡΠ°ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π° Π² ΠΌΠΎΠ΄ΡΠ»ΠΈ ES6, ΡΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ treehaking Π² ES6. ΠΠΏΡΡ Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ
ΠΎΡΠΎΡ, Π² ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π·Π»ΠΎΠΌΠ° Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ TS_NODE_PROJECT
. ΠΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΠ΅ΠΌ-ΡΠΎ, ΡΡΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΊΠΈ Π·Π°ΠΏΡΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ Π΅Π³ΠΎ, ΠΊΠΎΠ³Π΄Π° Ρ, Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², ΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΡ.
Π― Π²ΡΠ΅ Π΅ΡΠ΅ Ρ
ΠΎΡΠ΅Π» Π±Ρ, ΡΡΠΎΠ±Ρ ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ΅ΡΠ΅Π½ΠΎ. ΠΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΠ³ΡΠΎΠΌΠ½Π°Ρ ΠΏΠΎΠ±Π΅Π΄Π° Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΠΊΡΡΠΏΠ½ΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΡΡΠ΅Π±ΡΡΡΠΈΡ
ΡΠ°Π·Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² tsconfig.json
Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π½ΡΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
@Robinfr, ΡΡΠΎ extends
Π½Π΅ ΡΠ΅ΡΠ°Π΅Ρ Π΄Π»Ρ Π²Π°Ρ?
ΠΡΠΎ Π±ΡΠ»ΠΎ ΡΠ°ΠΊ. Π― ΡΠ·Π½Π°Π» ΠΎΠ± ΡΡΠΎΠΌ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π±Π΅Π· ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ include
Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ k ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· webpack.
ΠΠΏ 15 ΡΠ΅Π½. 2017 9:24 schreef ΠΠΈΡΡΠΎΠ½ ΠΠ΅Π»Π»ΠΈ [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/AD90FLZKcHMJeFU0osJroToToJawl .
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ @kitsonk ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ
ΠΎΡΠΎΡΠΎ, Ρ
ΠΎΡΡ, Π΅ΡΠ»ΠΈ Ρ Π½Π΅ Π΄Π΅Π»Π°Ρ ΡΡΠΎ-ΡΠΎ Π½Π΅ ΡΠ°ΠΊ, ΠΌΠ½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ (Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΏΠΎΠΊ build ΠΈ node_modules) Π² ΠΎΠ±ΠΎΠΈΡ
ΠΊΠΎΠ½ΡΠΈΠ³Π°Ρ
. Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΡΠ°ΠΌΠ°Ρ Π±ΠΎΠ»ΡΡΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΌΠΎΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ (ΠΎΠ±ΡΡΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Π³ΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Ρ TS_NODE_PROJECT
. ΠΡΡΠ³ΠΎΠΉ - ΠΏΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ Π΄Π²ΡΠΌΡ tsconfigs Π² VS.code. ΠΠ΅Ρ ΡΠΏΠΎΡΠΎΠ±Π° (Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ Π·Π½Π°Ρ) ΡΠΊΠ°Π·Π°ΡΡ VS, ΠΊΠ°ΠΊΠΎΠΉ ΡΠ°ΠΉΠ» ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΈ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠ½ΡΡΡ ΠΈΠ·-Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π΄Π»Ρ ΡΡΠΈΡ
ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌ tsconfig (ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΡΡΠΎ-ΡΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ tsconfig.build.json).
@voy, ΠΌΠΎΠ³Ρ Ρ ΡΠΏΡΠΎΡΠΈΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ Ρ Π²Π°Ρ Π΄ΡΡΠ³ΠΎΠΉ tsconfig Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ? ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠ½ΡΠ», VSCode ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ ΡΠ°ΠΉΠ» tsconfig ( tsconfig.json
) ΠΊ ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΡΠ΅. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Π΄ΠΎ ΡΠΈΡ
ΠΏΠΎΡ, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΉΠ» tsconfig Π² ΠΊΠΎΡΠ½Π΅, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ VSCode, ΠΏΠΎΡ
ΠΎΠΆΠ΅, Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π°ΡΠ½Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ...
@Robinfr ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ. Π² ΡΠΎΠΌ ΠΆΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ webpack ΠΈ babel ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ ES6 Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΡΡΡΡ ΠΈΠ²Π°Π½ΠΈΡ Π΄Π΅ΡΠ΅Π²Π°. Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ±ΠΎΡΠΊΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ node, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΠΌΠΏΠΎΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² require. Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΠΊΠ°ΠΊ Ρ ΠΌΠΎΠ³Ρ ΡΡΠΎ ΠΎΠ±ΠΎΠΉΡΠΈ.
@voy, ΡΠ°Π·Π²Π΅ Π±Ρ Ρ Π²Π°Ρ Π½Π΅ Π±ΡΠ»ΠΎ ΡΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅? ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, 1 ΠΏΠ°ΠΏΠΊΠ° Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Babel ΠΈ webpack ΠΈ 1 Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ·Π»ΠΎΠ². Π’ΠΎΠ³Π΄Π° Ρ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΡΡΠΎ tsconfig.json Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡΡΠΈΡ ΠΏΠ°ΠΏΠΎΠΊ. Π Π°Π·Π²Π΅ ΡΡΠΎ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π±Ρ Π΄Π»Ρ Π²Π°Ρ?
@Robinfr, ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ, Π½ΠΎ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΌΠΈΡΠ΅. Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ Ρ ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ Π²ΡΠ΅ Π½Π°ΡΠΈ ΡΠ°ΠΉΠ»Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ»ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΎΠΏΠΈΡΠ½ΡΠΌΠΈ, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ΅ΠΌΠΈ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ, ΡΡΠΎ ΠΈ Π²ΡΡ ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ Π±Π°Π·Π° TypeScript, Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΊΠΎΡΠ½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΡΡ ΡΡΡΠ»ΠΊΡ, Π½ΠΎ ΡΡΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π²ΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ Ρ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΡΡΠΎ-ΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎΠ΅ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ°ΠΊΠΎΠ½Π΅Ρ-ΡΠΎ Ρ ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
ΠΌΠΎΡ ΡΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
- ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /- app / client / (ΠΌΠΎΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°)- app / server / (ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΌΠΎΠ΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°)- app / build / (Π³Π΄Π΅ Ρ Π³Π΅Π½Π΅ΡΠΈΡΡΡ js)- ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ / ΡΠ·Π»Ρ-ΠΌΠΎΠ΄ΡΠ»ΠΈ /- app / package.json- ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ / tsconfig.server.json- ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ / tsconfig.client.json
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ tsconfig.server.json:
{"compilerOptions": {..., "outDir": _ "build / server" _},"exclude": ["node_modules", "client"]}
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ tsconfig.client.json:
{"compilerOptions": {..., "outDir": "build / client"},"exclude": ["node_modules", "server"]}
ΠΠ°ΡΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Ρ Ρ ΠΎΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠ΅ΡΠ²Π΅ΡΠ°, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ· ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
tsc --p tsconfig.server.json
Π ΡΡΠΎΠ±Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ· ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
tsc --p tsconfig.client.json
Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°, Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² package.json:
"scripts": {..., "tsc": "tsc --p tsconfig.server.json && tsc --p tsconfig.client.json", ...}
ΠΠ°ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΠ΅ΡΠ²Π΅Ρ, ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ, Ρ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΡΠΊΠ°Ρ ΡΡΠΎ ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
npm run tsc
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡΡ :-)