TypeScriptããŒãžã§ã³ïŒ 2.2.1
Visual Studio 2015 Update 3ã䜿çšãããšã次ã®ãããªãšã©ãŒãªã¹ãã«äœçŸãã®ãšã©ãŒã衚瀺ãããŸãã
å ¥åãã¡ã€ã«ãäžæžãããããããã¡ã€ã« 'CïŒ/ {{my-project}} / node_modules / buffer-shims / index.js'ãæžã蟌ããŸããã
ãã€ããããªæãã§ãã å®éã«ãã«ãã劚ããããã§ã¯ãªãããã¹ãŠãæ£åžžã«æ©èœããŸããããšã©ãŒãªã¹ãã¯æ°ãæ£ãããå®éã®ããšã©ãŒãçºçãããšãã«ãããèŠã€ããã®ãå°é£ã§ãã
ç§ã®tsconfig.json
ãã¡ã€ã«
{
"compileOnSave": true,
"compilerOptions": {
"baseUrl": ".",
"module": "commonjs",
"noImplicitAny": true,
"removeComments": true,
"sourceMap": true,
"target": "ES5",
"forceConsistentCasingInFileNames": true,
"strictNullChecks": true,
"allowUnreachableCode": false,
"allowUnusedLabels": false,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"typeRoots": [],
"types": [] //Explicitly specify an empty array so that the TS2 <strong i="17">@types</strong> modules are not acquired since we aren't ready for them yet.
},
"exclude": ["node_modules"]
}
ããããã¹ãŠã®ãšã©ãŒãåãé€ãã«ã¯ã©ãããã°ããã§ããïŒ
_ïŒãã®è³ªåã
ç§ãåãåé¡ãæ±ããŠããŸãã
--allowjs
èšå®ãããŠããŸããïŒ ãããžã§ã¯ããå
±æã§ããŸããïŒ
ç³ãèš³ãããŸãããããããžã§ã¯ããå
±æã§ããŸããããŸãããã®ãã©ã°ã¯èšå®ãããŠããŸããã ç§ã®tsconfig.json
ã¯äžã«ãããVS2015 Update 3ã§ããã䜿çšããŸããããã¯ãéåžžãMSBuildã§ãã«ããããªã¬ãŒããã ãã§ãã
åããããžã§ã¯ãã§åãåé¡ãçºçããŠããããšã«ã€ããŠãããŒã ã¡ãŒãããäžæºããããŸãã ãŸããèªå® ã§ããŸã£ããåãåé¡ãšåãã»ããã¢ããïŒTS 2.2.1ãVS2015 U3ãªã©ïŒãæã€å¥ã®ã³ã³ãã¥ãŒã¿ãŒã§ãããžã§ã¯ãã«åãçµãã§ããŸãã
åãæ§æã§å¿ èŠæäœéââã®ãããžã§ã¯ããäœæããå ŽåãåãåäœãèŠãããŸããïŒ
åãåé¡ããããŸãhttps://github.com/wc-catalogue/blaze-elements/issues/299ã¿ã€ãå®çŸ©ã§ã¯æžã蟌ã¿ã¢ã¯ã»ã¹ããããŸããã
@Hotell ãawesome-typescript-loaderããªãã§ãããèŠãŸããïŒ åçŸæé ãç§ãšå ±æã§ããŸããïŒ
ãããåé¡ã§ãããããã«ãåºåã¯çã®tsc
2åå®è¡ãããã®ã§ãã
ãªããžããªã®ã¯ããŒã³ãäœæããã ãã§ãhttps://github.com/wc-catalogue/blaze-elements
yarn
ããããyarn tsc
->åããŠã®ã³ã³ãã€ã«ïŒãã¹ãŠå€§äžå€«ïŒ=>åããŠã®definitions/
ãã©ã«ããŒã®çæyarn tsc
æŒã->ãšã©ãŒåæ§ã®åé¡ãçºçããŠããŸããåãããŒãžã§ã³ã®typescriptïŒ2.2.1ïŒãšVisual Studio 2015ïŒUpdate 3ïŒã§ãã åããŠãã«ããå®è¡ãããšãã¯ãšã©ãŒã¯ãããŸãããããã®åŸã¯äœçŸãã®ãšã©ãŒãçºçããŸãã
ïŒç§ãã¡ã«ãšã£ãŠïŒãã¹ãŠã®ãšã©ãŒã¯ãtsconfig.jsonãã¡ã€ã«ã§é€å€ããããã«èšå®ãããnode_modulesããã©ã«ããŒã«ããããã§ãã -åæ§ã®ãã°ãèŠããšããã®ããŒãžã§ã³ã®ã¿ã€ãã¹ã¯ãªããã§ã¯é€å€ãåãããã«æ±ãããŠããªãããã«èŠããŸããïŒ
tsconfig.jsonãã¡ã€ã«ïŒ
{
"compilerOptions": {
"noImplicitAny": false,
"noEmitOnError": true,
"removeComments": false,
"sourceMap": true,
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true
},
"exclude": [
"node_modules",
"wwwroot",
"aot",
"AngularApp/main-aot.ts"
],
"compileOnSave": true
}
ç§ãã¡ãåŸããšã©ãŒã®ããã€ãïŒãããã¯ãã¹ãŠåãã§ãããç°ãªããã¡ã€ã«ã§ãïŒïŒ
Severity Code Description Project File Line Suppression State
Error TS5055 Cannot write file 'C:/XYZ/Project.AppWeb/node_modules/zone.js/dist/zone.js' because it would overwrite input file. TypeScript Virtual Projects 1 Active
Error TS5055 Cannot write file 'C:/XYZ/Project.AppWeb/node_modules/events/events.js' because it would overwrite input file. TypeScript Virtual Projects 1 Active
Error TS5055 Cannot write file 'C:/XYZ/Project.AppWeb/node_modules/core-js/modules/_wks.js' because it would overwrite input file. TypeScript Virtual Projects 1 Active
Error TS5055 Cannot write file 'C:/XYZ/Project.AppWeb/node_modules/core-js/modules/_uid.js' because it would overwrite input file. TypeScript Virtual Projects 1 Active
Error TS5055 Cannot write file 'C:/XYZ/Project.AppWeb/node_modules/core-js/modules/_to-primitive.js' because it would overwrite input file. TypeScript Virtual Projects 1 Active
ç¹°ãè¿ãã«ãªããŸããããnode_modulesããã©ã«ããŒãåé€ãããšããã«ãã¯1åã¯æ©èœããŸãããåäœæããããšã次ã®åæ§ç¯ã§å€±æããŸãã
@Hotellç§ã¯ãããããŒã«ã«ã§èŠãŠããŸãããç§ã¯äœãæ¬ ããŠããŸããïŒ
c:\test\14538\blaze-elements>yarn tsc
yarn tsc v0.18.1
$ "c:\test\14538\blaze-elements\node_modules\.bin\tsc"
Done in 5.46s.
c:\test\14538\blaze-elements>yarn tsc
yarn tsc v0.18.1
$ "c:\test\14538\blaze-elements\node_modules\.bin\tsc"
Done in 5.87s.
c:\test\14538\blaze-elements>dir /B definitions
packages
polyfills.d.ts
styles.d.ts
test-helpers.d.ts
vendors.d.ts
c:\test\14538\blaze-elements>yarn tsc
yarn tsc v0.18.1
$ "c:\test\14538\blaze-elements\node_modules\.bin\tsc"
Done in 4.48s.
@ BrainSlugs83ããªãããªãããããžã§ã¯ããæã£ãŠãããªããç§ã¯èŠãŠ
ç§ãåãåé¡ã«çŽé¢ããŠããŸãããããã¯ãšã©ãŒã§ãïŒ
ãããŠããã¯ç§ã®tsconfig.jsonã§ãïŒ
ç§ã¯typescriptããŸã£ãã䜿çšããŠããªãã®ã§ããã«ããã¹ãããããããã«tsconfigãäœæããã°ãããªã®ã§ãtarget = ES6ãéžæããå¿ èŠããããŸãããããããªããšãä»ã®ãšã©ãŒãçºçããŠããŸããã
tsconfig.jsonã¯ãããžã§ã¯ãã®äžéšã§ããïŒ ã³ã³ãã³ãã¿ã€ãããã³ã³ãã³ããã§ããããšã確èªã§ããŸããïŒ ãããããªããããªãã¯ããªãã®ãããžã§ã¯ããå ±æã§ããŸããïŒ
@mhegazyããã«ã¡ã¯ãã¯ããtsconfig.jsonããããžã§ã¯ãã«å«ãŸããŠããããšã確èªã§ããŸãã
ç³ãèš³ãããŸããããã©ã®ãã³ã³ãã³ãã¿ã€ãããæããŠããã®ãããããŸãããæ確ã«ããŠããã ããŸããïŒ
ãããžã§ã¯ããå ±æã§ããŸããã
ç§ã®ãããžã§ã¯ãã§ã¯ãtsconfigãã¡ã€ã«ããããžã§ã¯ããã¡ã€ã«ã«å«ãŸããŠããŠãã³ã³ãã³ããšããŠãªã¹ããããŠããããšã確èªã§ããŸãã
@ max-favilli @mhegazyã¯ããã³ã³ãã³ãã¿ã€ããã«ã€ããŠè©±ããšãã®ããã«ãã¢ã¯ã·ã§ã³ããæå³ãããšæããŸãã
ãœãªã¥ãŒã·ã§ã³ãšã¯ã¹ãããŒã©ãŒã§tsconfig.jsonãéžæããŸãã [ããããã£]ãŠã£ã³ããŠã衚瀺ããŸãïŒããã©ã«ãã§ã¯F4ããŒïŒã ãã«ãã¢ã¯ã·ã§ã³ããããã£ããããŸãã
ããããšã@ kevindqc ã @ mhegazyã¯ãããã«ãã¢ã¯ã·ã§ã³ãã¯ãã³ã³ãã³ããã«èšå®ãããŠããŸã
ä»®æ³ãããžã§ã¯ãã®æ§é ãç§ãšå ±æããŠã次ã®ããšãè¡ãå¿ èŠããããŸããã
Tools
> Options
> Text Editor
> TypeScript
> Project
ã Display Virtual Projects when no Solution is loaded
ãŸã;TypeScript Virtual Project
ãšããååã®æ°ããããŒãã衚瀺ãããŸãããã®ãããª@mhegazy ïŒ
å©ããŠãããŠããããšãã
ç§ã¯åãåé¡ãæ±ããŠããŸãã ç§ããããžã§ã¯ããå ±æããããšã¯ã§ããŸããããã§ããã ãå€ãã®æ å ±ãæäŸããããã«åªããŸãã
.csprojïŒ <TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
ïŒã§typescriptã®ã³ã³ãã€ã«ãç¡å¹ã«ããŸãã
代ããã«ããã«ãã€ãã³ãã«ããnpm run build:prod
ã«ãã£ãŠã³ã³ãã€ã«ãããŸãã
ãšã©ãŒã¯åžžã«ååšãããšã¯éããŸããã ç§ã¯ãããã衚瀺ãããããšããŠããŸãïŒVSã«è¡šç€ºãããŠããã®ã§ãVSãåèµ·åããŸããïŒã typescriptãããžã§ã¯ãã®æ§ç¯ããœãªã¥ãŒã·ã§ã³ã®æ§ç¯ããã¹ãã®å®è¡ãã³ãŒãåæã®å®è¡ãã³ãŒãã«ãã¬ããžã®å®è¡ãªã©ãè©ŠããŸããããäœãããªã¬ãŒãããŸããã ãããŠãæåŸã®æç« ãæžããŠãããšããšã©ãŒãåºãŸããã ããã§ããããè¡ãã®ã¯ããã€ãã®ããã¯ã°ã©ãŠã³ãã¿ã¹ã¯ã®ããã§ããïŒ ãã«ããéå§ããŠããçŽ2ååŸã«çºçããããã§ãïŒå°ãªããšã2ã3åè©ŠããŠã¿ãŸããïŒ
ã¿ã€ã ã©ã€ã³ïŒ
1ïŒ37ïŒ20-VisualStudioãéããŸãã
1ïŒ37ïŒ30-ãœãªã¥ãŒã·ã§ã³ã®æ§ç¯ãéå§
1ïŒ38ïŒ20-ãã«ããå®äºããŸãã
1ïŒ39ïŒ39-ãšã©ãŒã衚瀺ãããŸãã
ãããžã§ã¯ãããŸã v2.0.3 Microsoft.TypeScript.Compiler
ããã³Microsoft.TypeScript.MSBuild
nugetããã±ãŒãžã䜿çšããŠããããšã«æ°ä»ããŸããã ããããv2.2.1ã«æŽæ°ããŸããã ãããŸã§ã®ãšããããšã©ãŒã¯ãããŸããã ãšã©ãŒãå床衚瀺ãããå Žåã¯æŽæ°ãããŸãã ïŒç·šéïŒãšã©ãŒãåã³è¡šç€ºãããŸãããVSãéãããšãã«ãã«ããã以å€ã«äœãããã«ãå°ãé·ã5åã»ã©ããããŸãããå®éã«ã¯ããšã©ãŒãååŸããããã«äœããã«ãããå¿
èŠã¯ãããŸããããããžã§ã¯ããšæ°ååŸ
ã€ãšãšã©ãŒã衚瀺ãããŸãïŒ
ãããã®å€ãnugetããã±ãŒãžã«ã€ããŠãããã¯æ£åžžã§ããïŒ æ°ããããŒãžã§ã³ã®typescriptãã€ã³ã¹ããŒã«ãããšãã«ããããžã§ã¯ãã®typescriptããŒã«ãã¢ããã°ã¬ãŒãããããã®ãããã¢ããã衚瀺ããããšæããŸãããæŽæ°ãããã®ã¯<TypeScriptToolsVersion>2.2</TypeScriptToolsVersion>
ã ãã®ããã§ãã nugetããã±ãŒãžãæŽæ°ããã¹ãã§ã¯ãããŸãããïŒ
Typescript 2.2.1ã«ã¢ããããŒããããšãããåãåé¡ãçºçããŸããã ãã¹ãŠã®node_modulesã«ãã©ã°ãç«ãŠãŸãããtscã³ã³ãã€ã©ã¯åé¡ãªãå®äºããŸãã
@mhegazy
@Hotellç§ã¯ãããããŒã«ã«ã§èŠãŠããŸãããç§ã¯äœãæ¬ ããŠããŸããïŒ
ããã§ãã httpsïŒ//github.com/wc-catalogue/blaze-elements/commit/cdb94bf8feb3a1ad7e21e6fce243e3322c1334ccã«ãã£ãŠä¿®æ£ãããŸãã
é ããçããšthx4ã®å©ããæ±ããŠãã ããïŒ
@ Hotell @ mhegazyç§ã«ã¯ããŸããããªãããã§ãã
ãdefinitionsããã©ã«ãã«d.tsãã¡ã€ã«ãããå Žåã¯ããããæ©èœããŸããïŒ
ããããç§ã¯ãããæã£ãŠããŸããã ç§ã¯inheritedlyé€å€ãã¹ããnode_modulesãã®äž@typesããããŸããïŒ
@chrismbarrããããŸã 解決ãããã©ããèããŠãããã§ããïŒ ç§ã¯ã¹ã¬ããããã©ããŒããŠããŠã @ Hotellã®ããã€ãã®æçš¿ã§ææ¡ãããä¿®æ£ãè¡ããŸãããã
詳现ãªãã°ãæå¹ã«ããŠãçµæãéä¿¡ã§ããŸããïŒ ã·ã¹ãã ç°å¢å€æ°TSS_LOG
ã-file C:/temp/logs/tsserver.log -level verbose
ãªã©ã®å€ã«èšå®ããŸãïŒlogsãã©ã«ããŒãååšããããšã確èªããŠãã ããïŒã 次ã«ãåé¡ãåçŸããåŸãåæã®ããã«ãã°ãéä¿¡/æ·»ä»ããŸãã ïŒæ³šïŒãã¡ã€ã«ãã¹ãå®äºãªã¹ããªã©ã®ããŒã¿ãå«ãŸããŠããå¯èœæ§ããããããå
±æããããªãããŒã¿ããªãããšã確èªããŠãã ããïŒã
ç§ã®ãã¹ãã§ã¯ããããžã§ã¯ãã·ã¹ãã ãééã£ããã¡ã€ã«ãå«ããããžã§ã¯ãã®ãã¥ãŒãæ§ç¯ããäºæž¬ã§ããªããšãã«æç¶çãªãšã©ãŒãçºçããã®ãæã èŠãŸããã ãããåå ãã©ãããããã§ç¢ºèªããããšæããŸãã
ãã¡ã€ã«ãã¢ããããŒãããã®ã§ã¯ãªãçŽæ¥éä¿¡ãããå Žåã¯ãã¡ãŒã«ã¢ãã¬ã¹ãæäŸã§ããŸãïŒMicrosoft dot comã®billtiïŒã ããããšãã
@johnleeãããã
@billtiå€æ°ãè¿œå ãããVisual StudioïŒ2017ïŒãåèµ·åããããœãªã¥ãŒã·ã§ã³ãåæ§ç¯ãããŸãããããã°ãã¡ã€ã«ãäœæãããŠããŸããã äœã確èªããã°ããã§ããïŒ
ããã¯ééããªãã·ã¹ãã ç°å¢å€æ°ã§ããïŒã€ãŸããæ°ããã³ãã³ãããã³ãããéããŠã SET TSS
ãå®è¡ãããšããªã¹ããããŠããèšå®ã«ãªããŸãïŒïŒ ããã§ãªãå Žåã¯ããã°ãæžã蟌ãŸãããã©ã«ãããã§ã«ååšããŸãïŒãã¬ãŒã¯ååšããªããã£ã¬ã¯ããªãäœæããŸããïŒã ãã以å€ã«ããã¹ã§ããã¯ã¹ã©ãã·ã¥ããããã©ã¯ãŒãã¹ã©ãã·ã¥ã䜿çšããæ¹ãå®å
šã§ãã
:(
@billtiããããŸããã確èªãããšããããã°ãã¡ã€ã«ããããŸãã æ·»ä»ã®ãã¡ããã芧ãã ãã
tss-log.zip
ããããšãã ãã®ãã°ã調ã¹ãŸãããããã®ãã°å ã®åŒã³åºãã«ãã£ãŠãšã©ãŒãå ±åãããŠããã®ã¯ããããŸããã ãã®ãã°ãã«ããŒããæéæ ã§ãšã©ãŒã確å®ã«çºçããŸãããïŒ
@billtiã¯ãããšã©ãŒã¯åžžã«çºçããŠããŸãïŒ
圌ãã¯æ°žä¹ ã«ããã«ããŸãã ãããŠããã¹ãŠã®ãã«ãã§æŽæ°ãããŸãã
誀ã£ãå€æ°å®£èšã«é¢é£ãããããã®ãšã©ãŒã¯ãã¹ãŠïŒæ¬¡ã®ãªãªãŒã¹ã§ãã§ã«ä¿®æ£ãããŠããå¥ã®åé¡ïŒã ãã®åé¡ã¯ãäžèšã®ã¿ã€ãã«ãšã¹ã¯ãªãŒã³ã·ã§ããããšã«çŽCannot write file...
ã§ãã Cannot write file...
åé¡ã¯ãããŸãããïŒ
@billtiã¯ã以åã®ã¡ãã»ãŒãžïŒæããã®ãã¢ã³ã¹ãã¬ãŒã·ã§ã³ãšããŠããã«æ®ã
@typesããåãåé€ããã ãã§ãåã®ã¡ãã»ãŒãžãããããã®ãšã©ãŒãåãé€ããŸããã
ã©ããããããšãã
@billtiéä¿¡ãããã°ãããã€ãTSS_LOG
ã-file C:/temp/logs/tsserver.log -level verbose
ãŸããã
C:\temp\logs
ãååšãã Everyone
ãå®å
šã«å¶åŸ¡ããŸããã
VS2015ãåèµ·åãããšããã¹ãŠã®Cannot write file...
ãšã©ãŒãçºçããåŸã§ãã C:\temp\logs
å
ã«äœãäœæãããŸããã æ°ããã³ãã³ãããã³ããã«node node_modules\typescript\lib\tsserver.js
ïŒããã³ããã«CTRL + CïŒãå
¥åããããšãããšã2ã€ã®ãã°ãã¡ã€ã«ãååŸãããŸãã
@billtinp ã ãã®åé¡ã¯VS2015ã§ã®ã¿çºçããŠãããšæããŸãã VS2017ã䜿çšããŠããåé¡ãæ±ããå¯äžã®ãŠãŒã¶ãŒã¯ãå ¥åã«é¢é£ããããŸããŸãªãšã©ãŒãçºçããŠããŸããã VS2015ããVS2017ã«åãæ¿ãã人ã¯ãåé¡ã解決ãããšè¿°ã¹ãŸããã
ãŸãããšã©ãŒãªã¹ãã¯ã©ã³ãã ã«å€æŽãããããšã¯ãããŸããããã®åé¡ã«é¢ãããã¹ãŠã®ãæžã蟌ã¿äžå¯..ããšã©ãŒãã©ã³ãã ã«äžåºŠã«å ¥åãããŸãã ïŒ15080ã§ä¿®æ£ããŠãããããã§ããïŒ ããªããæšæ¥ãããåç §ããããšãé€ããŠãç§ã¯ãã®åé¡ã«ã€ããŠäœãèŠãŸãããïŒ ã©ãããã°ãã¹ãã§ããŸããïŒ 2.3 RCãããããã§ãããä¿®æ£ã2æ¥åã«ããŒãžããããšãã«9æ¥åã«ãªãªãŒã¹ãããŸãã:(
ãŸãããœãªã¥ãŒã·ã§ã³ãéããåŸããšã©ãŒããšã©ãŒãªã¹ãã«æ®ã£ãŠããããšã«æ°ä»ããŸããã
ãŸããtypescriptä»®æ³ãããžã§ã¯ããæçš¿ãã人ã¯ããšã©ãŒãç°ãªã人ã ã£ãã®ã§ã圹ã«ç«ããªãã£ããšæããŸãã ãããç§ã®ãã®ã§ãïŒ
node_modules
ããã«ããã¯ãã§ããïŒ ããã¯ç§ã®tsconfigé€å€ã«ãããŸãã ãã ããç©ççãªnode_modulesãã©ã«ããŒã«ãããã¹ãŠã®ãã®ãå«ãŸããŠããããã§ã¯ãããŸããïŒ14åã®ãµããã©ã«ããŒãšnode_modulesãã©ã«ããŒå
ã®854åã®ãµããã©ã«ããŒïŒ
{
"compilerOptions": {
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"module": "commonjs",
"moduleResolution": "node",
"noImplicitAny": true,
"removeComments": false,
"sourceMap": true,
"suppressImplicitAnyIndexErrors": true,
"target": "es5",
"baseUrl": "./src",
"skipLibCheck": true,
"paths": {
},
"typeRoots": [
"node_modules/@types"
]
},
"exclude": [
"node_modules",
"dist",
"typings"
],
"types": [
"core-js",
"jasmine",
"lodash",
"node",
"webpack"
],
"awesomeTypescriptLoaderOptions": {
"forkChecker": true,
"useWebpackText": true
}
}
TS2.3ããŒã«ã«ã¢ããã°ã¬ãŒãããåŸããããŸã§ã®ãšãããšã©ãŒã¯çºçããŠããŸããã ããããšãïŒ
ç·šéïŒãããã çµå±ã®ãšããããšã©ãŒã¯ãŸã æ®ã£ãŠããã衚瀺ããããŸã§ã«æéãããããŸããã
ãã®åé¡ã¯ãã®åé¡ã«é¢é£ããŠããããã§ãã åçŸãããµã³ãã«ãœãªã¥ãŒã·ã§ã³-ã¢ããããŒãã
ç§ã¯èªåã®ä¿®æ£ãèŠã€ããŸããã ç§ã®å Žåã files
é
åãæå®ããã«outDir
ãšrootDir
ã䜿çšããŸããã outDir
ã®ãã¹ãexclude
é
åã«è¿œå ãããšããã¹ãŠãæ£åžžã«æ©èœããŠããããã«èŠããŸãã
{
"compilerOptions": {
...,
"outDir": "./dist",
"rootDir": "./src",
},
"exclude": [
"node_modules",
"dist" <-- I had to add this to fix the errors
]
}
TypeScriptã¯ã outDir
ãšããŠèšå®ãããŠããŠãã dist
ãã©ã«ããŒã®ã³ã³ãã³ããç£èŠããŠããå¯èœæ§ããããŸãã
ãããžã§ã¯ãã«ãŒãã®äžã«outDir
ããããã«ãŒãã®äžã«ãã¹ãŠãå«ããŠããå Žåãããã¯äºæ³ãããŸãã éåžžããã«ãåºåã¯ãããžã§ã¯ãã®ãœãŒã¹ãã©ã«ããŒå
以å€ã®å Žæã«é
眮ããå¿
èŠããããŸãã
äžèšã®ãã¹ãŠã®åé¡ã¯ããã®ã¹ã¬ãããŸãã¯ãªã³ã¯ãããåé¡ã§å¯ŸåŠãããŠããããã§ãã ããã§ãªãå Žåã¯ãç¥ãããã ãããåéããŸãã ããããšãïŒ
@billtiããªãã®ã³ã¡ã³ãã¯ç§ã®åã®ã³ã¡ã³ããžã®è¿çã ãšæããŸããïŒ ãããããªããæ確ã«ããŠãããŠããããšãã ããã«ããã rootDir
æå®ãããšãã«ã³ã³ãã€ã©ããã®ç¹å®ã®ãã©ã«ãã®ã¿ãç£èŠããä»ã®ãã¹ãŠãé€å€ãããšæ³å®ãããããåé¡ãããæ確ã«ãªããŸããã ããããçŸåšã®åäœã¯çã«ããªã£ãŠããŸãã
æè¯ã®è§£æ±ºçã¯borislemkeãã
{
"compilerOptions": {
...,
"outDir": "./dist",
"rootDir": "./src",
},
"exclude": [
"node_modules",
"dist" <-- I had to add this to fix the errors
]
}
åãåé¡ãçºçããã€ã³ããŒãã®1ã€ãdistãã©ã«ããŒEGã®ã¯ã©ã¹ã誀ã£ãŠåç
§ããŠããããšãããããŸããã
import {ClassName} from "../../dist/ClassName";
ã€ã³ããŒãããã¯ã©ã¹ãåããã©ã«ããŒã«ãã£ãã®ã§ã次ã®ããã«å€æŽããŸããã
import {ClassName} from "./ClassName";
ãããŠããã¹ãŠãåã³ã³ã³ãã€ã«ãããŠããŸã:)
ã¢ããªã«ã¯äºåå®çŸ©ããããdistããã©ã«ããŒããããŸããã ãããåé€ãããšãç§ã¯ãããä¿®æ£ããŸããã
ãããæ ¹æ¬çãªåé¡ã ãšæããŸãïŒæåŸã®Windows Creators UpdateïŒïŒ
visual-studio-2015-deletes-file-on-save-cordova-solution
tsconfig.jsonã®é€å€ãªã¹ãã«ãdistããã©ã«ããŒãè¿œå ããã ãã§ã
å
ïŒ
"exclude"ïŒ["node_modules"ã "dist"]
ã€ã³ã¯ã«ãŒãã»ã¯ã·ã§ã³ãè¿œå ããŠãããä¿®æ£ããŸããã
"include": [
"*.ts",
],
"exclude": [
"node_modules"
]
ç§ã®sourcesãã£ã¬ã¯ããªã®äžã«ããoutDir
ã䜿çšããŠãããšãã«ããããã«ééããŸããã
typescriptã³ã³ãã€ã©ãããã©ã«ãã§outDir
å
ã®ãã®ãã³ã³ãã€ã«ããããšããŠã¯ãªããªãããšãç¥ããªãã®
ç§ã¯netbeansã§ãã®åé¡ãæ±ããŠããŸãç¬ð
ãŸãã2ã€ã®ãã¡ã€ã«foo.ts
ãšfoo.tsx
ãã©ã¡ããfoo.js
ã«ã³ã³ãã€ã«ãããå Žåã«ãããã®ãšã©ãŒãçºçããŸããã
"compilerOptions": {
"noEmit": true
}
ç§ã®ããã«ãããä¿®æ£ããŸããã
noEmit
ã¯ãåæãã*.js
ãã¡ã€ã«ãçæãããå Žåã«é©ãããœãªã¥ãŒã·ã§ã³ã§ãã çµå±ã®ãšããããããã¯å¿
ãããtsc
ã§çæãããããã§ã¯ãããŸããã
ç§ã®å ŽåãReam.jsã¯.ream/**.js
ãçæãããããã³ãŒãã«import XXX from '#out/yyy'
ã§ã€ã³ããŒãããŸãïŒããã¯æ©èœããŸãããVS Codeã§ããã¡ã€ã«ãæžã蟌ããŸãã...ããšããèŠåãçæãããŸãïŒã
åºæ¬çã«ã "noEmit": false
ã䜿çšããå¯äžã®çç±ã¯ãçã®tsc
ã䜿çšããå Žåã§ãã ä»ã®ãã¹ãŠã®ç°å¢ïŒ ts-node
/ ts-node-dev
ãwebpackãrollupïŒã®å Žåã¯ãæå¹ã«ããæ¹ãå®å
šã§ãã
@uglycoyoteã®ããã«ãç§ã«ãšã£ãŠexcludesé
åã«outdir
ãè¿œå ããããš
ãã®åé¡ã¯ãããã«é¢é£ããŠããããã«æããŸãïŒ
ç§ãèšå®ããŠãããããåé¡ã¯ç§ã«èµ·ãã£ãŠãã"declaration": true
ã§tsconfig.json
ããã¯ãããæããã®ã§d.ts
ãã£ã¬ã¯ããªã¯å€ã§ãã£ãŠããbuildãã©ã«ãå
ã®ãã¡ã€ã«æ ¹ã åé¡ãªãæ°ãããã«ããå®è¡ã§ããŸããããã以éã®ãã«ãã§ã¯Cannot write file ... because it would overwrite input file.
ãã¹ããŒãããŸãã ç§ãä»ã®ç©èªã§èŠãããšãã§ãããã®ãããããã¯å¥ã®ããŒãžã§ã³ã§æ©èœããŠããŸããããããŠäœããå€ãã£ãã«éããããŸããã
test.ts
ãã¡ã€ã«ãrootDir
å€ã«ãããšããåé¡ãä¿®æ£ããã®ãšåãããã«ã tsconfig.json
以äžãè¿œå ããå¿
èŠããããŸããã
"exclude:" [ "./build" ]
ããã¯ãæ§æã®ç¶æ¿ã§ãçºçããå¯èœæ§ããããŸãã åæ§æã§ã¯ã outDir
åå¥ã«æå®ããå¿
èŠããããŸãã outDir
ã®ãã¹ã¯çµ¶å¯Ÿçã«è§£æ±ºãããŠããããã§ãã ãŠãŒã¶ãŒã®èŠ³ç¹ããã¯ãã°ã§ããå¯èœæ§ããããŸãã
{
"extends": "../../base/tsconfig.json",
"compilerOptions": {
"outDir": "myOutDir" // <--- Don't forget this
}
}
package.json
ã«ãoutDirããžã®èª€ã£ãåç
§ããããã©ããã確èªãã䟡å€ããããŸã
"main": "lib/index.js",
"typings": "lib/__types__", <-------
"devDependencies": {
"@types/lodash.mapvalues": "^4.6.4",
"@types/node": "^10.12.18",
"@types/winston": "^2.4.4"
}
ç§ã¯ããããããžã§ã¯ãåç
§ã®ãããããžã§ã¯ãã§çµéšããŸããã é€å€ã®ã©ããéèŠã§ã¯ãããŸããã§ãããäœã@elmppã«ãã£ãŠã»ã®ãããããtypings
ãšã³ããªã§ããã
ãããã£ãŠãããã«ããããããžã§ã¯ãåç
§monorepoã§TS5055: Cannot write file because it would overwrite input file
ãçæãããŸãã
"main": "lib/cjs/index.js",
"module": "lib/esm/index.js",
"typings": "lib/cjs/index.ts",
ããããããã¯ãšã©ãŒãå ±åããŸããïŒ
"main": "lib/cjs/index.js",
"module": "lib/esm/index.js",
"typings": "src/index.ts",
ãããã£ãŠãæããã«ããã®äºåå ¬éãæäœããããããã±ãŒãžå ã®srcãå ¬éããå¿ èŠããããŸãã
èšå®ïŒ
"exclude": [
"node_modules",
"dist"
]
ç§ã®ããã«ãããä¿®æ£ããŸããïŒç§ã®outputDir
ã¯dist
ïŒã
tsc --watch
ã®åºåãã£ã¬ã¯ããªãããã©ã«ãã§é€å€ãããŠãããšããã°ããããããããŸããã
åŸã§åç §ã§ããããã«ãããã¯ã¢ãžã¥ãŒã«ãããèªäœã®å éšããã€ã³ããŒãããå Žåã«çºçããŸãã
ãããã£ãŠã import x from 'mymodule
å
ã§mymodule
ãããšããããããªã¬ãŒãããŸãã ããã¯éåžžã«äžå¯è§£ã§ãããããããä¿®æ£ããå¿
èŠããããŸãïŒ
ããªããæã£ãŠããå ŽåSimilaryãç§ã¯åé¡ãæã€index.ts
ã®ãããªã©ã€ã³ã®æã§export * from './foo'
ãããã³ãããã®ãã¡ã€ã«ã®ããããã§ãç§ã¯èŒžå
¥ãããimport foo from '.'
ã§ã¯ãªãimport foo from './foo'
ãããã®ãšã¯ã¹ããŒãããããã¡ã€ã«ã®1ã€ã«
index.ts
ãåé€ããŠã€ã³ããŒããšã©ãŒãçºçãããŸã§ããã®2æ¥éé ãæ©ãŸããŸããã ããã¯éåžžã«èªæã§ã¯ãããŸããã§ããã
ãããã£ãŠãåé¡ã¯ãåããªããžããªã«2ã€ã®tsãããžã§ã¯ããããããã ãšæããŸãã ïŒAngularïŒNestjsïŒãã¬ãã«1ãã©ã«ããŒã®tsconfig.jsonããã®ãšã©ãŒãã¹ããŒããŠããŸãã ç§ã¯exclude "public"ãé 眮ããããšã§ä¿®æ£ããŸãããããã¯ããããªãã¯ã§ã¯ç¬èªã®tsconfig.jsonãæã€ç§ã®Angularã³ãŒãã§ãã
ts-node
ãæ©èœããªãçç±ãããããªãã£ãããããã®åé¡ãçºçããŠããŸããã次ã«ãåé¡ãTypeScriptã§ãããã©ããã確èªããããã«tsc
ã䜿çšããŸããã tsc
çµæã git status
å®è¡ããããšã§ç¢ºèªã§ããts
ãšäžŠãã§æ°åã®.js
ãã¡ã€ã«ãã§ããŸããã
解決çã¯git clean -f
ã
ç§ã®å ŽåãVS Codeã¯src
ãã©ã«ããŒããã§ã¯ãªãdist
ãã©ã«ããŒãããã¡ã€ã«ãèªåã€ã³ããŒãããããã§ãã åé¡ã解決ããä¿®æ£ã
ããã¯å®éã«ã¯éããŠã¯ãããŸãããtypescriptã¯äœãèµ·ãã£ãŠããã®ãã瀺ããšã©ãŒãåºåããã¯ãã§ãã çŸåšãç解ããããšã¯ã»ãŒäžå¯èœã§ãã äœãåå ã§ãããã¯ããããããŸãããVSCodeã誀ã£ãŠtsconfig.jsonåç §ãæŽæ°ããŠããå¯èœæ§ããããŸããããã¹ãŠã1ãã³é ããªããæ¯åãããã°ãç°¡åã§ã¯ãããŸããã
Vueãããžã§ã¯ãã§ã¯ãã«ãŒãã§ãããã¯ç§ã®ããã«åããŸããïŒ
// tsconfig.json
{
"include": ["./src/**/*"],
"exclude": ["node_modules", "dist", "public"],
"compilerOptions": {
"module": "es2015",
"outDir": "",
"moduleResolution": "node",
"target": "es5",
"allowJs": true,
"checkJs": true, // Type checking
}
}
è¿œå ããåŸ"outDir": "",
åé¡ã¯ãªããªããŸããã
ããã§ã®ç§ã®ç®æšã¯ãtsã€ã³ããªãžã§ã³ã¹ã.js / vueãã¡ã€ã«ã§æ©èœãããããšã§ãã
åããšã©ãŒã¡ãã»ãŒãžããããŸããã åé¡ã¯ãåããã©ã«ãã«åãååã§æ¡åŒµåãç°ãªã2ã€ã®ãã¡ã€ã«ããããããæ¡åŒµåã.js
ãã¡ã€ã«ãåé€ãããšä¿®æ£ãããããšã§ãã
åããšã©ãŒã¡ãã»ãŒãžããããŸããã åé¡ã¯ãåããã©ã«ãã«åãååã§æ¡åŒµåãç°ãªã2ã€ã®ãã¡ã€ã«ããããããæ¡åŒµåã
.js
ãã¡ã€ã«ãåé€ãããšä¿®æ£ãããããšã§ãã
ãããç§ã¯åãåé¡ãæ±ããŠããŸããã VS-Codeã䟿å©ã«åäœæãã.tsx
ãã¡ã€ã«ã®ååã.ts
ãããããåé¡ãçºçããŸããã
ãããæ£ãã解決ããæ¹æ³ãããããŸããããç§ã®å Žåã¯tsconfig.jsonãã"declaration": true
ãåé€ããŸããã D.tsãã¡ã€ã«ã¯äœæãããŸãããããšã«ããå¿
èŠãããŸããã
åæ§ã®ãšã©ãŒã¡ãã»ãŒãžãã°ãŒã°ã«ã§æ€çŽ¢ããŠããã«æ¥ã人ã«ã¯ãç§ã®çºèŠãå ±æãããŠãã ããã
allowJs: true
ãåé€ããããCLIãªãã·ã§ã³ãã--allow-js
ãåé€ããŠãã ãããexclude: ...
è¿œå ããããšã«ãã£ãŠïŒããããæ°ä»ããã«ïŒãããè¡ããŸãããcompilerOptions
ã®äžã«ãexcludeããè¿œå ããªãããã«æ³šæããŠãã ãããã圹ã«ç«ãŠã°å¹žãã§ãð
ãã«ãlib/
ãã£ã¬ã¯ããªãæåã§é€å€ããå¿
èŠããããŸãã
äžéšã®ãªãã·ã§ã³ã«äºææ§ããªããªããã°ãã©ããã«ããããã§ãã ç§ã¯ããã䜿çšããããšãçºèŠããŸãã
allowJS
true
+
rootDir
+ outDir
ïŒOK
rootDir
+ outFile
ïŒNOKïŒ rootDir
ã¯èæ
®ãããŸããïŒdirãšsubdirã®ãã¹ãŠã®ãã¡ã€ã«ã¯ã³ã³ãã€ã«ãããäžæžããããå¯èœæ§ããããŸãã
ä»ã®ããã€ãã®ãªãã·ã§ã³ã®çµã¿åããã¯çŠæ¢ãããŠããŸãã
"allowJs": true
"noEmit": true
ç§ã®ããã«åãã
Vueãããžã§ã¯ãã§ã¯ãã«ãŒãã§ãããã¯ç§ã®ããã«åããŸããïŒ
// tsconfig.json { "include": ["./src/**/*"], "exclude": ["node_modules", "dist", "public"], "compilerOptions": { "module": "es2015", "outDir": "", "moduleResolution": "node", "target": "es5", "allowJs": true, "checkJs": true, // Type checking } }
è¿œå ããåŸ
"outDir": "",
åé¡ã¯ãªããªããŸãããããã§ã®ç§ã®ç®æšã¯ãtsã€ã³ããªãžã§ã³ã¹ã.js / vueãã¡ã€ã«ã§æ©èœãããããšã§ãã
thxãããã¯ç§ã®ããã«åããŸãã
ã¿ã€ããã§ãã¯ã®ã¿ïŒã³ã³ãã€ã«ãªãïŒã§TSã䜿çšããŠããŠã .js
ãã¡ã€ã«ã§å¿
èŠãªå Žåã¯ã @ guaizi149ãœãªã¥ãŒã·ã§ã³ã䜿çšããŠ
"compilerOptions": {
"allowJS": true,
"noEmit": true
}
ããã«ãããTSã¯ã³ã³ãã€ã«ã«ã€ããŠå¿é
ããå¿
èŠããªãããããã¡ã€ã«ãäžæžããããããèŠåãããªã¬ãŒããããããããšã¯ãããŸããã ããã¯ã outDir: ""
ã䜿çšããããã®ããè¯ããœãªã¥ãŒã·ã§ã³ã§ãã
ããã¯ãæ§æã®ç¶æ¿ã§ãçºçããå¯èœæ§ããããŸãã åæ§æã§ã¯ã
outDir
åå¥ã«æå®ããå¿ èŠããããŸããoutDir
ã®ãã¹ã¯çµ¶å¯Ÿçã«è§£æ±ºãããŠããããã§ãã ãŠãŒã¶ãŒã®èŠ³ç¹ããã¯ãã°ã§ããå¯èœæ§ããããŸãã{ "extends": "../../base/tsconfig.json", "compilerOptions": { "outDir": "myOutDir" // <--- Don't forget this } }
ãã®ãœãªã¥ãŒã·ã§ã³ã¯ç§ã«ãšã£ãŠé
åã®ããã«æ©èœããŸããïŒ ç§ã®tsconfig.json
ã¯ä»ãã®ããã«ãªã£ãŠããŸãïŒ
{
"compilerOptions": {
"allowJs": true,
"baseUrl": "../node_modules",
"types": ["cypress"],
"outDir": "myOutDir"
},
"include": ["**/*.*"]
}
"allowJs": true
"noEmit": true
ç§ã®ããã«åãã
@ guaizi149ã«æè¬ããŸããããªãã®è§£æ±ºçã¯ç§ã®ããã«åããŸãð
解決æžã¿-ç§ã®tscãã«ãã«distãã£ã¬ã¯ããªãå«ãŸããŠããŸããïŒ
"exclude": [
"node_modules"
]
- - ã«è¡ã
"exclude": [
"node_modules",
"dist"
]
dist
ã¯ãã«ããã©ã«ãã§ããïŒ
outDir
ãé€å€ããŠãããŸããããªãã£ãå Žåã¯ããã¹ãšãã¡ã€ã«åãåãã§æ¡åŒµåãç°ãªããã¡ã€ã«ãéè€ããŠããªããã©ããã確èªããŠãã ããã
ããã¯ã宣èšãã¡ã€ã«ããã«ãããé€å€ãããŠããªãå Žåã«çºçããŸãã ãããçºçãããã³ã«ããã«ããŒã¯æ¢åã®ã.d.tsããã¡ã€ã«ããã«ãããããããåããã¡ã€ã«åã«çœ®ãæããããšããŸãã ãã®ããããšã©ãŒãçºçããŸãïŒ Cannot write file ... because it would overwrite input file.
ãããé²ãããã«ãjour tsconfig.jsonãã¡ã€ã«ã§"outDir":"build"
ãé€å€ã§ããŸãã
"exclude": [
"build",
....
]
ãŸãã¯ãoutDirãå®çŸ©ãããŠããªãå Žåã¯ããã¹ãŠã®d.ts
é€å€ããŸãã æ¡åŒµãã¡ã€ã«ïŒ
"exclude": [
"**/*.d.ts"
.....
]
ã圹ã«ç«ãŠãã°
@Abadii ïŒã³ã³ãã€ã«äžã«-bãªãã·ã§ã³ã䜿çšããŠãããããããããŸããããã©ã¡ãã®ã¢ãããŒããæ©èœããŸããã§ããã
@Abadii ïŒã³ã³ãã€ã«äžã«-bãªãã·ã§ã³ã䜿çšããŠãããããããããŸããããã©ã¡ãã®ã¢ãããŒããæ©èœããŸããã§ããã
tsconfig.json
ãã¡ã€ã«ãštsc
ããŒãžã§ã³ãå
±æã§ããŸããïŒ
@Abadii ïŒããã«ãããŸãïŒæããã«æŽæ°ãããé€å€ãªãã§ïŒã tsc
ã®ããŒãžã§ã³ã¯3.8.3ã§ãã
{
"compilerOptions": {
"importHelpers": true,
"target": "es6",
"module": "CommonJS",
"lib": ["es2018"],
"downlevelIteration": true,
"skipLibCheck": true,
"strict": true,
"moduleResolution": "node",
"esModuleInterop": true,
"experimentalDecorators": true,
"outDir": "../lib",
"sourceMap": true,
"declaration": true
},
"exclude": ["node_modules"]
}
@Abadii ïŒããã«ãããŸãïŒæããã«æŽæ°ãããé€å€ãªãã§ïŒã
tsc
ã®ããŒãžã§ã³ã¯3.8.3ã§ãã{ "compilerOptions": { "importHelpers": true, "target": "es6", "module": "CommonJS", "lib": ["es2018"], "downlevelIteration": true, "skipLibCheck": true, "strict": true, "moduleResolution": "node", "esModuleInterop": true, "experimentalDecorators": true, "outDir": "../lib", "sourceMap": true, "declaration": true }, "exclude": ["node_modules"] }
以äžã®ãªããžããªãã芧ãã ããã tsconfig.jsonã䜿çšããŠãšã©ãŒãåçæããŸããïŒ
https://github.com/Abadii/tsconfig
PSãããŠã.. / libãã©ã«ããŒãåé€ãããšã©ããªããŸããïŒ ããã¯æ§ç¯ãããŸããïŒ
@Abadii ïŒãã«ããã©ã«ããŒãåé€ãããšãã«ããããŸãïŒå®éã«ã¯ããã«ããã©ã«ããŒãåé€/空ã«ããå Žåã«ã®ã¿ãã«ããããŸãïŒã ããã¯ã exclude
宣èšãã¡ã€ã«ãšãã«ããã©ã«ããŒã§ãã£ãŠãåœãŠã¯ãŸããŸãã
åèãŸã§ã«ããããžã§ã¯ãã®æ§é ã¯æ¬¡ã®ããã«ãªããŸãã
project\
lib\
session.d.ts
session.js
src\
session.ts
tsconfig.json
package.json
ãããŠç§ã¯ä»¥äžã§æ§ç¯ããŸãïŒ tsc -p ./src/tsconfig.json
ïŒå®éãç§ã¯éåžžrm -rf ./lib && tsc -p src/tsconfig.json
ãã«ãããŸããããããä¿®æ£ããããã«ããã«ããŸã;ïŒïŒ
@Abadii ïŒãã«ããã©ã«ããŒãåé€ãããšãã«ããããŸãïŒå®éã«ã¯ããã«ããã©ã«ããŒãåé€/空ã«ããå Žåã«ã®ã¿ãã«ããããŸãïŒã ããã¯ã
exclude
宣èšãã¡ã€ã«ãšãã«ããã©ã«ããŒã§ãã£ãŠãåœãŠã¯ãŸããŸãã
ããã§ããã«ããã©ã«ããåé¡ã®åå ã§ããããšãããããŸããã ã©ããããããã tsc
ãã«ãã¯ãã«ããã©ã«ããŒãé€å€ããŸããã é€å€ã§çµ¶å¯Ÿãã¹ã䜿çšããŠã¿ãããšãã§ããŸãã
ãŸãããã«ããã©ã«ããŒãã¹ã³ãŒã../lib
ç¯å²å€ã«ããããšã«ã泚æããŸããã å€åããã¯ãããé€å€ããªãçç±ã§ããããŸãã outDirãšããŠ./lib
ãè©ŠããŠãåäœãå€ãããã©ããã確èªããŠãã ãã
WindowsãŠãŒã¶ãŒã®å Žåã¯ãå®çŸ©ããã絶察ãã¹ãæ£ããããšãå確èªããŠãã ããã
@Abadii ïŒããããšãããããŸãããè€æ°ã®ãã·ã³ã§ãããžã§ã¯ãã«åãçµãã§ããããã¹ãŠã®ãã·ã³ã§åäžã®ãã©ã«ããŒæ§é ãä¿èšŒã§ããªãããã絶察ãã¹ã䜿çšã§ããŸããã ç§ã«ã¯ããã¯ãã°ã®ããã«æããŸã-ãã©ã«ããŒãšå®£èšãã¡ã€ã«ã®äž¡æ¹ãé€å€ããããã«tsconfigã«æ瀺ããŸãããããã§ã¯ãããŸããã ãããåéããå¿ èŠããããŸããïŒ
@Abadii ïŒããããšãããããŸãããè€æ°ã®ãã·ã³ã§ãããžã§ã¯ãã«åãçµãã§ããããã¹ãŠã®ãã·ã³ã§åäžã®ãã©ã«ããŒæ§é ãä¿èšŒã§ããªãããã絶察ãã¹ã䜿çšã§ããŸããã ç§ã«ã¯ããã¯ãã°ã®ããã«æããŸã-ãã©ã«ããŒãšå®£èšãã¡ã€ã«ã®äž¡æ¹ãé€å€ããããã«tsconfigã«æ瀺ããŸãããããã§ã¯ãããŸããã ãããåéããå¿ èŠããããŸããïŒ
ãªãã»ã©ãæåŸã«è©Šãããšãã§ããã®ã¯ãtsconfigãã¡ã€ã«ãproject/tsconfig.json
ã«å
¥ããŠããã¹ãå€æŽããããšã§ãã ãããããŸããããªãå Žåãç§ãéžæè¢ããããŸããã
è©ŠããïŒ
outDir
->ããããèšå®ããŸããallowJs: false
->ããããèšå®ããŸãã.d.ts
ãé€ã->ããããnoEmit: true
->ããããç§ã¯ãã®ã¹ã¬ããã§ãã¹ãŠã®ææ¡ãè©ŠããŸããã VSCodeãšã©ãŒãç¶ãã ãã§ãªããååšããªããªã£ããã¡ã€ã«ãåç §ããŸãã ð€·ââïž
è©ŠããïŒ
outDir
->ããããèšå®ããŸããallowJs: false
->ããããèšå®ããŸãã.d.ts
ãé€ã->ããããnoEmit: true
->ããããç§ã¯ãã®ã¹ã¬ããã§ãã¹ãŠã®ææ¡ãè©ŠããŸããã VSCodeãšã©ãŒãç¶ãã ãã§ãªããååšããªããªã£ããã¡ã€ã«ãåç §ããŸãã
ã¿ãŒããã«ãä»ããŠçŽæ¥ãã«ãããããšãããšã©ããªããŸããïŒ
outDirãèšå®ãããã«ãããåã«å¿ ã空ã«ããŠãã ãã
@Abadiiã ãã....ãããèµ·ãã£ãçç±ã¯ãJSãã¡ã€ã«ãå«ãŸããŠããªããŠããCommonJSã¢ãžã¥ãŒã«ã§ããããã«å€±æããŠããããã ãšæãããŸã....ð€...ã
ã€ãŸãããã¹ãŠãé©åã«ã€ã³ããŒã/ãšã¯ã¹ããŒãããããšããã®åé¡ã¯çºçããªããªããŸããã ãããã£ãŠããã®ã¹ã¬ããã®ã³ã¡ã³ããšèšå€§ãªæ°ã®ä¿®æ£ã«åºã¥ããŠãããã¯ãããã®èµ€ããã·ã³ãšã©ãŒã®1ã€ã ãšæããŸãã ã®ããã«ãXã¿ã€ãã®JS / Intellisense /ã³ã³ãã€ã«ã®åé¡ãããå ŽåãVSCodeã¯ãã®Cannot write file
ãšã©ãŒãã¹ããŒããŸãã ããããç§ã®å Žåãããã¯ããã®ã¹ã¬ããã§æäŸãããŠããå€æ°ã®ãœãªã¥ãŒã·ã§ã³ã®ä»ã®ãã¹ãŠä»¥å€ã®ãœãªã¥ãŒã·ã§ã³ã§è§£æ±ºãããŸããã ð€·ââïžãããŠãŸãã_ååšããªãã£ã_ãããŠ_眮ãæããããªã_ãã¡ã€ã«ã«ãã®ãšã©ãŒãæããŸããã ã§ã¯ããšã©ãŒããã£ãã·ã¥ãããŠããŠãäžæãªãšã©ãŒããã£ãã·ã¥ããããšã©ãŒãã¹ããŒããŠããå¯èœæ§ããããŸããïŒ ãããªæãïŒ ç§ã¯èª°ãããã®ç¹å®ã®ãšã©ãŒã®åšãã®ã³ãŒãã調ã¹ãå¿
èŠããããšæããŸãã
ãããç§ã®ã°ãŒã°ã«æ€çŽ¢ã§æåã«åºãŠãããã®ãªã®ã§ãããã«ã³ã¡ã³ãããŸãã
ç§ããã®åé¡ã«ééããŸããã ã³ã³ãã€ã«ããã»ã¹ã®äžéšããé€å€ããããã£ã¬ã¯ããªå ã«ããããšãèªèããŠããªãããã§ãã
ãããè¡ã£ãŠãåé¡ã¯çºçããŸããã
"exclude": ["**/*.d.ts", "dist", "node_modules"]
ãããè¡ããšãåé¡ãçºçããŸãã
"exclude": ["dist/**/*.d.ts", "dist", "node_modules"]
ãŸãã¯ããïŒ
"exclude": ["**/dist/**/*.d.ts", "dist", "node_modules"]
äžå¹³ãèšã£ãŠãããã¡ã€ã«ãæããã«dist
å
ã«ããã«ããããããããšã©ãŒãçºçããŸãã
error TS5055: Cannot write file '/Users/leila/dev/wip/jest-fp-ts/dist/index.d.ts' because it would overwrite input file.
error TS5055: Cannot write file '/Users/leila/dev/wip/jest-fp-ts/dist/matchers/index.d.ts' because it would overwrite input file.
ç§ã®å Žåã src/index.ts
ãsrc/matchers/index.ts
ããã€ã³ããŒãããã³åãšã¯ã¹ããŒãããã次ã«src/matchers/eitherMatchers/index.ts
ããã€ã³ããŒãããã³åãšã¯ã¹ããŒããããã€ã³ããŒããèšå®ãããŠããŸãã
æåã®2ã€ã®ãã¡ã€ã«ã¯ãã³ã³ãã€ã«ãšã©ãŒã®åå ãšãªã£ãŠãããã¡ã€ã«ã§ãã 3çªç®ã®ãã¡ã€ã«ã¯åé¡ãããŸããã ãããã£ãŠãã€ã³ããŒã/ãšã¯ã¹ããŒãããªãŒãã³ã³ãã€ã«ã«ã©ã®ããã«åœ±é¿ããŠãããã«é¢é£ããŠããããã«èŠããŸãã
ç§ã¯åãåé¡ãæ±ããŠãããšãã«ãã®åé¡ã«ééããä»ã®äººãåãããã«ééããå Žåã«åããŠãç§ã®çµæãè¿œå ããããšæããŸããã
ç§ã®å Žåãããã±ãŒãžããšã«åå¥ã®tsconfigãã¡ã€ã«ãæã€monorepoãããããããã¯ãã¹ãŠããŒã¹tsconfigããæ¡åŒµãããŠããŸãã åããã±ãŒãžæ§æã«ã¯ãäŸåããããã±ãŒãžã®ãã¹ãæãreferences
ãšã³ããªããããŸãã ãŸãããªããžããªã®ã«ãŒãã«tsconfig.jsonãããã files: []
ãå«ã¿ããã¹ãŠã®ããã±ãŒãžãã£ã¬ã¯ããªãžã®åç
§ããããŸãã ãã®ããã«ããŠãã«ãŒãããtsc -b --watch
ãå®è¡ãããããžã§ã¯ãå
šäœã®å€æŽæã«åæ§ç¯ããããšãã§ããŸãã
ããã¯ããªãé·ãéæ£åžžã«æ©èœãããã®åŸãæ§æãå€æŽãããŠããªããŠããçªç¶ãã®ãšã©ãŒãã¹ããŒãå§ããŸããã
ãããžã§ã¯ãå šäœããã«ãããã®ã§ã¯ãªãããšã©ãŒã§å ±åããã1ã€ã®ããã±ãŒãžãåç¬ã§ãã«ãããããšããŠãæçµçã«ããã远跡ããŸããã
åé¡ã¯ããããžã§ã¯ãèªäœãã€ã³ããŒãããããšããããšã§ããã ããã±ãŒãžåã¯@my-project/utils
ãã³ãŒããå¥ã®ããã±ãŒãžããutilsããã±ãŒãžã®ãã¡ã€ã«ã«ç§»åãããŸã§ã¯åé¡ãªãæ©èœããŸããã ãã®ã³ãŒãã«ã¯import stuff from '@my-project/utils';
å«ãŸããŠãããããããšã©ãŒã®åå ã§ããã 代ããã«import stuff from '.';
ã«å€æŽããããšã§ããšã©ãŒã¯ãªããªããŸããã
@jasonkããã¯ããããç§ã®ç¡ç¥ãæããã«ããŠããã ãã§ãããã¢ãã¬ããããããã¹ãŠã®ã€ã³ããŒãã解決ããäœãïŒããšãã°webpackïŒã«ãã£ãŠãã³ãã«ãããŠããå Žåã«ã®ã¿æ©èœããŸãããïŒ ã¢ããªããžããªãå ¬éããã³äœ¿çšå¯èœãªã¢ãžã¥ãŒã«ã§æ§æãããŠããå Žåãçžå¯Ÿã€ã³ããŒãã«å€æŽããŠããšã©ãŒã¯çºçããŸãããïŒ
@Ghirigoroããããåé¡ã¯ããã±ãŒãžãã¹ã䜿çšããŠããããšã§ã¯ãªããããã±ãŒãžãã¹ã䜿çšããŠããã±ãŒãžãå éšããã€ã³ããŒãããŠããããšã§ãã TypescriptããªããŠããããã¯æ©èœããŸããã
åºæ¬çã«ç§ãããããšã¯ãããšåçã§ããïŒ
$ mkdir problem
$ cd problem
$ npm init -y
$ echo 'console.log( "WORKED!" );' > index.js
$ echo 'require( "problem" );' > test.js
次ã«ãããŒãã§ãããå®è¡ããããšãããšã次ã®ããã«ãªããŸãã
$ node ./test.js
internal/modules/cjs/loader.js:985
throw err;
^
Error: Cannot find module '/Users/jasonk/problem/test.js'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:982:15)
at Function.Module._load (internal/modules/cjs/loader.js:864:27)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
at internal/main/run_main_module.js:18:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
ããã±ãŒãžåã眮ãæãããšãæ£ããæ©èœããŸãã
$ echo 'require( "." );' > test.js
$ node ./test.js
WORKED!
ç§ã¯ããã€ã³ããŒããããä»ã®ãã¹ãŠã®ããã±ãŒãžãäœãèµ·ãã£ãããšã¯ããã«ããå®è¡ãããšããšããããšã§ãã£ããšæããã@my-project/utils
ã€ã³ããŒããã«è§£æ±ºããããšãæã£ãŠããpackages/utils
圌ãã¯æ£ãããšã³ããªãæã£ãŠããã®ã§ïŒ references
tsconfigã®node_modules/@my-project/utils
ã«è§£æ±ºãããŸãããããã¯ã packages/utils
ã·ã³ããªãã¯ãªã³ã¯
ããã¯ã宣èšãã¡ã€ã«ããã«ãããé€å€ãããŠããªãå Žåã«çºçããŸãã ãããçºçãããã³ã«ããã«ããŒã¯æ¢åã®ã.d.tsããã¡ã€ã«ããã«ãããããããåããã¡ã€ã«åã«çœ®ãæããããšããŸãã ãã®ããããšã©ãŒãçºçããŸãïŒ
Cannot write file ... because it would overwrite input file.
ãããé²ãããã«ãjour tsconfig.jsonãã¡ã€ã«ã§
"outDir":"build"
ãé€å€ã§ããŸãã"exclude": [ "build", .... ]
ãŸãã¯ãoutDirãå®çŸ©ãããŠããªãå Žåã¯ããã¹ãŠã®
d.ts
é€å€ããŸãã æ¡åŒµãã¡ã€ã«ïŒ"exclude": [ "**/*.d.ts" ..... ]
ã圹ã«ç«ãŠãã°
ãã«ããã£ã¬ã¯ããªãé€å€ãããšãåé¡ã解決ããŸãã
ã»ãšãã©ã®å Žåãããã¯ã 2ã€ã®ããŒãã§1ã€ã®ãããžã§ã¯ããå®è¡ããããšãããšãã«çºçããŸãã
ãã®ä»®èª¬ã§ã¯ããã«ãã®å®è¡åŸã«ãããŒãããšããååã®ã³ã³ãã¥ãŒã¿ãŒäžã®ããã»ã¹ã®æ°ããã¹ãã§ããŸãã
åé¡ã解決ããããã«ç§ãããããšïŒ
ã¹ããã1ã
æ¯èŒnode -v
ãš
nvm -ls
ã䜿çšäžã®ããŒãžã§ã³ã
ã¿ãŒããã«ã»ããã®çŸåšã®ããŒãããŒãžã§ã³ïŒ
nvm use {neededVersion}
ååãšããŠãnvmã§ããŒãã®äžèŠãªããŒãžã§ã³ãåé€ããŸãïŒããã«ãããIDEãããŒãã®éåžžã®ããŒãžã§ã³ãèªåçã«å€å¥ããã®ã«åœ¹ç«ã¡ãŸãïŒã
ã¹ããã2ã
IDEã®çŸåšã®ããŒãã確èªããŸãã ã€ãŸããWebStormã®å ŽåïŒ
åªå
床->èšèªãšãã¬ãŒã ã¯ãŒã¯-> Node.jsãšNPMïŒããŒãã€ã³ã¿ãŒããªã¿ãŒ-å¿
èŠãªããŒãžã§ã³ãèšå®ããŸãã
ïŒããã«ãã©ãã§ãåã¢ã€ãã ã®ããŒãã®ããŒãžã§ã³ã確èªã§ããŸãïŒTypescriptïŒïŒ
ãŸãããã®åé¡ã¯ãnpmããã±ãŒãžãŸãã¯gitãµãã¢ãžã¥ãŒã«ãå éšã§ç¬èªã®ããŒãã䜿çšããå Žåã«çºçããå¯èœæ§ããããŸã
ç§ã¯WebdriverIO / WDIOãããžã§ã¯ãã§ãã®åé¡ã«çŽé¢ããŠããŸããã tsconfig.jsonã®ãincludeããããwdio.config.jsããåé€ãããšè§£æ±ºããŸããã
æãåèã«ãªãã³ã¡ã³ã
ç§ã¯èªåã®ä¿®æ£ãèŠã€ããŸããã ç§ã®å Žåã
files
é åãæå®ããã«outDir
ãšrootDir
ã䜿çšããŸãããoutDir
ã®ãã¹ãexclude
é åã«è¿œå ãããšããã¹ãŠãæ£åžžã«æ©èœããŠããããã«èŠããŸããTypeScriptã¯ã
outDir
ãšããŠèšå®ãããŠããŠããdist
ãã©ã«ããŒã®ã³ã³ãã³ããç£èŠããŠããå¯èœæ§ããããŸãã