Vscode-ng-language-service: Angular ์–ธ์–ด ์„œ๋น„์Šค๋Š” Ivy๋กœ ๋นŒ๋“œ ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 12์›” 05์ผ  ยท  23์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: angular/vscode-ng-language-service

๐Ÿž ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ

์˜ํ–ฅ์„๋ฐ›๋Š” ํŒจํ‚ค์ง€

์ด ๋ฌธ์ œ๋Š” @ angular / language-service ํŒจํ‚ค์ง€๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์ˆ 

Angular ์–ธ์–ด ์„œ๋น„์Šค๋Š” Ivy๋กœ ๋นŒ๋“œ ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋ฅ˜


'lib-component' is not a known element:
1. If 'lib-component' is an Angular component, then verify that it is part of this module.
2. If 'lib-component' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.ng(0)

ํ™˜๊ฒฝ


Editor: VisualStudio Code
Editor extension: angular.ng-template v0.900.0

Angular CLI: 9.0.0-rc.5
Node: 10.17.0
OS: darwin x64

Angular: 9.0.0-rc.5
... animations, cli, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router
Ivy Workspace: Yes

Package                            Version
------------------------------------------------------------
@angular-devkit/architect          0.900.0-rc.5
@angular-devkit/build-angular      0.900.0-rc.5
@angular-devkit/build-ng-packagr   0.900.0-rc.5
@angular-devkit/build-optimizer    0.900.0-rc.5
@angular-devkit/build-webpack      0.900.0-rc.5
@angular-devkit/core               9.0.0-rc.5
@angular-devkit/schematics         9.0.0-rc.5
@angular/cdk                       9.0.0-rc.4
@ngtools/webpack                   9.0.0-rc.5
@schematics/angular                9.0.0-rc.5
@schematics/update                 0.900.0-rc.5
ng-packagr                         9.0.0-rc.3
rxjs                               6.5.3
typescript                         3.6.4
webpack                            4.41.2

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

์ด๊ฒƒ์— ๋Œ€ํ•œ ์ง„์ „์ด ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ?

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

์ตœ์‹  ์ •๋ณด. Ivy ์ปดํŒŒ์ผ๋Ÿฌ๋Š” lib-name.metadata.json ์— project_root/dist/lib-name lib-name.metadata.json ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์ด ๋ฌธ์ œ์ผ๊นŒ์š”?

+1 ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค

๋ฒ„์ „ 9 ์ดํ›„์—๋Š” Ivy ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์–ธ์–ด ์„œ๋น„์Šค ๋‚ด๋ถ€๋ฅผ ์ „ํ™˜ ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๊ทธ๋•Œ๊นŒ์ง€๋Š” ์–ธ์–ด ์„œ๋น„์Šค๊ฐ€ metadata.json ์— ์˜์กดํ•˜์—ฌ ์ง€์‹œ๋ฌธ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, ์ด๊ฒƒ์ด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋‹น๋ถ„๊ฐ„ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด tsconfig์— "enableIvy": false ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ prod ๋ฒ„์ „์„ ๋นŒ๋“œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด dist ํด๋”์— ํ•„์š”ํ•œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ : ng build lib-component --prod

๊ทธ๋Ÿฌ๋‚˜ vs-code์—์„œ ๊ฐ ๋นŒ๋“œ ํ›„์— Restart Angular Language service ๋ฅผ ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ์ •๋ณด๋Š” vs-code ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ angular ์ž์ฒด ์‚ฌ์ด์—์„œ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ ์žˆ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋‚ด ๊ฐ€์ •

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์— ๊ด€ํ•œ @jiverson ng build lib-component --prod ๋‚˜์—๊ฒŒ An unhandled exception occurred: Configuration 'production' is not set in the workspace. ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ --prod ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋” ์ด์ƒ ๊ด€๋ จ์ด ์—†๋‹ค๋Š” ์ฆ๊ฑฐ๋ฅผ ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ €๋Š” @ angular / cli v8.3.25๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ... ๊ทธ๋ž˜์„œ์ด ๋ฌธ์ œ๋Š” # 665์— ๋Œ€ํ•œ ์ค‘๋ณต ๊ฐ€๋Šฅ์„ฑ์œผ๋กœ ์–ธ๊ธ‰๋˜์—ˆ์ง€๋งŒ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒฌ์žˆ๋Š” ์‚ฌ๋žŒ? / cc @ayazhafiz

์ด๊ฒƒ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” prod์—์„œ๋„ ์•„์ด๋น„๋กœ ์ž์ฒด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

์–ธ์–ด ์„œ๋น„์Šค๋ฅผ Ivy ๋ฐฑ์—”๋“œ๋กœ ์˜ฎ๊ธฐ๋Š” ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค!

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ng build my-library --prod ๋ฐ
  • ctrl + shift + p๋ฅผ ๋ˆ„๋ฅธ ๋‹ค์Œ "Angular Language ์„œ๋ฒ„ ๋‹ค์‹œ ์‹œ์ž‘"์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

" 'xyz'๋Š” ์•Œ๋ ค์ง„ ์š”์†Œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค."์œ ํ˜•์˜ ์˜ค๋ฅ˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ƒ์œ„ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ดํ•ดํ–ˆ๋“ฏ์ด ์ด๊ฒƒ์€ --prod ๊ฐ€ dist ํด๋”์— my-library.metadata.json ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์–ธ์–ด ์„œ๋ฒ„์—์„œ ์ •์˜ ๋œ ๊ตฌ์„ฑ ์š”์†Œ ์„ ํƒ๊ธฐ๋ฅผ ์ธ์‹ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‚ด ๋„์„œ๊ด€์—์„œ.

์ด์ œ ng build my-library --prod ๋นŒ๋“œ ํ•œ npm publish ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋‹ค๋ฅธ Angular ์•ฑ์— ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ npm install ํ•˜๋ฉด ์–ธ์–ด ์„œ๋ฒ„๊ฐ€ ์„ค์น˜๋œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. npm ํŒจํ‚ค์ง€ ( node_modules ํด๋”์— ์žˆ์Œ)๊ฐ€ " 'xyz'๋Š” ์•Œ๋ ค์ง„ ์š”์†Œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค"๋ฅผ๋ณด๊ณ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉฐ node_modules์˜ my-library ํด๋”์— ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ json ํŒŒ์ผ ์ด ์žˆ๋”๋ผ๋„ npm install ed my-library๊ฐ€์žˆ๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ๋™์ผํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์™€ ๋™์ผํ•œ ๋ฒ„๊ทธ์ผ๊นŒ์š” ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ๋ฒ„๊ทธ์ผ๊นŒ์š”?

์•„๋‹ˆ๋ฉด ๋ˆ„๋ฅด๋Š” ํ‚ค๋‚˜ ์–ธ์–ด ์„œ๋ฒ„์— ์ œ๊ณต ํ•  ๋ช…๋ น์˜ ๋‹ค๋ฅธ (๋˜๋Š” ์ถ”๊ฐ€) ๋งˆ๋ฒ• ์กฐํ•ฉ์ด์žˆ์–ด npm install ed Angular ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๊นŒ?

Ivy๊ฐ€ ์ž‘๋™ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฐฉ์‹์€ ๋” ์ด์ƒ metadat.json ํŒŒ์ผ์ด ์•„๋‹Œ .d.ts ํŒŒ์ผ์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ์— ์˜์กดํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. --prod ๋นŒ๋“œ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ์œ ์ผํ•œ ์ด์œ ๋Š” tsconfig๊ฐ€ enableIvy๋ฅผ false๋กœ ์„ค์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค (npm ๊ฒŒ์‹œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด angular์—์„œ ๊ถŒ์žฅ ๋จ). ๊ฒŒ์‹œ ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•ด ๋นŒ๋“œ๊ฐ€ Ivy๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ž˜ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ์–ธ์–ด ์„œ๋น„์Šค ๋ฌธ์ œ์ด๋ฉฐ ๊ฐ๋„ cli ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

  1. Ivy๋Š” ALS ๋ฐ ๊ธฐํƒ€ ๋„๊ตฌ์— ํ•„์š”ํ•œ metadata.json ํŒŒ์ผ๋„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
  2. ALS๋Š” ํ˜„์žฌ .metadata.json ๋Œ€์‹  Ivy ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ์—์„œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ๋งŒํผ ๋˜‘๋˜‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์™œ ๋งค์šฐ ์„ฑ๊ฐ€์‹  ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ?

  • ์•„์ด๋น„๋Š” ๊ฐˆ ๊ธธ์ด๋ฉฐ ๋„์„œ๊ด€ ๊ฐœ๋ฐœ์ž๋“ค๋„ ๊ฐˆ ๊ธธ์„ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • Ivy ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์ ํŠธ์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค ๋•Œ ์—ฌ์ „ํžˆ ์ข‹์€ ์‹œ๋ฏผ์ด๋ฉด์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ npm์— ๊ฒŒ์‹œํ•˜๋ฉด์„œ ์•ฑ์—์„œ Ivy ์—”๋“œ ํˆฌ ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
  • ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž๋Š” npm ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์•ฑ ๊ฐœ๋ฐœ ์ค‘์— ๊ฐ€์ ธ ์˜ค๊ธฐ๋ฅผ ์œ„ํ•ด tsconfig๋ฅผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ dist ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ถ„๋ช…ํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์žˆ๋Š” ํ•ญ๋ชฉ์„ ์•Œ ์ˆ˜์—†๋Š” ๊ฒƒ์œผ๋กœ ํ‘œ์‹œํ•˜๋Š” vscode๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ •๋ง ์งœ์ฆ๋‚ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด๊ฐ€ ํ•œ ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ์ƒํ™ฉ์—์„œ ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์ด ๋ฐ›์•„ ๋“ค์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์‚ฌ์šฉ์ž์™€ ๋™์ผํ•œ ์กฐ๊ฑด (์˜ˆ : ๊ฒŒ์‹œ ๋œ npm ํŒจํ‚ค์ง€)์—์„œ ๊ฒŒ์‹œ ๊ฐ€๋Šฅํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ๋„์›€์ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฒŒ์‹œ ๊ฐ€๋Šฅํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ์•ก์„ธ์Šค ํ•  ์ˆ˜์žˆ๋Š” monorepo ๋˜๋Š” ์œ ์‚ฌํ•œ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€๊ฐ€ 'happy-library'๋ผ๊ณ  ๊ฐ€์ • ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. --prod๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒจํ‚ค์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ํ‰์†Œ์ฒ˜๋Ÿผ npm์— ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค. --prod ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋นŒ๋“œ ๊ตฌ์„ฑ์—์„œ Ivy๋ฅผ ๋น„ํ™œ์„ฑํ™”
  2. ์ž‘์—… ๊ณต๊ฐ„ ๋ฃจํŠธ์—์„œ tsconfig.json ์„ ์—…๋ฐ์ดํŠธํ•˜์—ฌ (๋˜๋Š” vscode๊ฐ€ ์•Œ์•„ ๋‚ด์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค ...) ํ•ด๋‹น ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ๊ฒฝ๋กœ ๋งคํ•‘์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํŒจํ‚ค์ง€์˜ ์†Œ์Šค ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌ ํ‚ต๋‹ˆ๋‹ค.
  3. node_modules์—์„œ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ฒ˜๋Ÿผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ์—์„œ ํŒจํ‚ค์ง€๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค (์˜ˆ : import {whatever} from 'happy-library';
    "paths": {
      "happy-library": ["libs/happy-library/src/index.ts"]
    }

์™„๋ฒฝํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์ ์–ด๋„ ๋‚˜๋Š” vscode์˜ ์˜ค๋ฅ˜์—†์ด ๋‚ด๊ฐ€ ๋งŒ๋“  end-to-end Ivy ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋‚ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์—ฌ์ „ํžˆ ์‚ฌ๋ž‘์„ ๊ณต์œ ํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด NPM์— ๊ฒŒ์‹œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ALS๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ์ง€์†์ ์œผ๋กœ ์–€ / npm ๋งํฌํ•˜๊ณ  ๋””๋ฒ„๊น… ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋†“์นœ ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด ํ”ผ๋“œ๋ฐฑ์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค ...

์ถ”์‹  : https://github.com/abdes/happy-coding ์—์„œ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ์™„์ „ํžˆ ์ž‘๋™ํ•˜๋Š” ์ €์žฅ์†Œ

์ด๊ฒƒ์— ๋Œ€ํ•œ ์ง„์ „์ด ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ?

11 ์›”์— ์˜ˆ์ •๋œ Angular 11์˜ ๋ฒ ํƒ€ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด์ด ๊ธฐ๋Šฅ์ด ์ œ๊ณต ๋  ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

https://github.com/angular/vscode-ng-language-service/issues/335#issuecomment -693545000์„ ์ฐธ์กฐ

๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ Angular 11์—์„œ ์‹คํ–‰ ์ค‘์ด๋ฉฐ (--prod ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Angular 11๊ณผ ํ•จ๊ป˜ ๋นŒ๋“œ ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ) @nprasovict์œผ๋กœ ์„ค๋ช… ๋œ ๋ฌธ์ œ๊ฐ€ npm install ํ”„๋กœ์ ํŠธ์— ์„ค์น˜ํ•  ๋•Œ Angular Language Service๊ฐ€ ๋‚ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋‚ด ๋ณด๋‚ธ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ธ์‹ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋žซ๋™์•ˆ ๋ฌธ์ œ๊ฐ€ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์–ธ์ œ ํ•ด๊ฒฐ ๋  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ง€๊ธˆ์€ VSCode ํ™•์žฅ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋๋‚  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ์ด ๋•Œ๋ฌธ์— ๊ฐ•๋ ฅํ•œ ๊ฐœ๋ฐœ์„ ์žƒ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค ...

@JonWallsten ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ž˜ ์ดํ•ดํ•˜์‹œ๋ฉด ๊ณง ์ถœ์‹œ ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” v11.1.0 ์—์„œ ์ถœ์‹œ ๋œ ์ƒˆ๋กœ์šด Ivy ๋„ค์ดํ‹ฐ๋ธŒ ์–ธ์–ด ์„œ๋น„์Šค์— ์˜ํ•ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@kyliau ๋‹˜, ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค!
์—„๊ฒฉํ•œ null ๊ฒ€์‚ฌ์™€ ๊ด€๋ จํ•˜์—ฌ ํ…œํ”Œ๋ฆฟ์—์„œ ๋งŽ์€ ์ƒˆ๋กœ์šด ์˜ค๋ฅ˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@kyliau ํ  ... ์ด์ƒ ๋ฌธ์ œ๋Š” ์ด๋ฏธ ALS 11.1.1์„ ์‚ฌ์šฉ ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ด๋ก ์ ์œผ๋กœ๋Š” ๋” ์ด์ƒ ๋ฌธ์ œ๊ฐ€๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ํ”„๋กœ์ ํŠธ๋Š” ์ผ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์•ฑ์ด์žˆ๋Š” ์ผ๋ฐ˜ CLI ๋‹ค์ค‘ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.
npm ๋งํฌ์— ๋Œ€ํ•ด ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค ... ๋‚˜๋Š” ํŠน๋ณ„ํ•œ ์ผ์„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ฒฝ๋กœ๋Š” ๋ฃจํŠธ tsconfig.json์— ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. --prod ํ”Œ๋ž˜๊ทธ๋กœ lib๋ฅผ ๋นŒ๋“œํ•˜์—ฌ ivy๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋˜๋„๋กํ•ฉ๋‹ˆ๋‹ค.
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ dist ํด๋”๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ํŒจํ‚ค์ง€๋ฅผ ๋‚ด ์•ฑ์— ์—ฐ๊ฒฐํ•˜๊ณ  libmodule์„ ๊ฐ€์ ธ ์™”์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์•Œ๋ ค์ง„ ๊ฐ๋„ ์š”์†Œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
lib์˜ ๊ตฌ์„ฑ ์š”์†Œ๋Š” declarations ๋ฐ exports ๋ฐฐ์—ด์— ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ํ‘œ์‹œ๋˜์ง€๋งŒ vscode์—์„œ ์—ฌ์ „ํžˆ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ๋ฒ„์ „ :

11.1.3
11.2.1
0.1100.4

๋‚˜๋Š” ๋™์˜ํ•œ๋‹ค, ์ด๊ฒƒ์€ ์•„๋งˆ ๋‹ซํ˜€์„œ๋Š” ์•ˆ๋œ๋‹ค @kyliau ... ๋‚˜๋Š” ์ด๊ฒƒ๋„ ๋ณด์—ฌ์ค„ ์ˆ˜์žˆ๋Š” ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ์œ„ํ•ด ๋งŒ๋“  ์ตœ์†Œํ•œ์˜ ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ์˜ˆ์ œ๊ฐ€์žˆ๋‹ค. ์ด๊ฒƒ์„๋ณด์‹ญ์‹œ์˜ค : https://github.com/vicatcu/monorepo-example-error (์›๋ž˜์ด SO ๊ฒŒ์‹œ๋ฌผ ๊ณผ ๊ด€๋ จํ•˜์—ฌ

๋‚ด ์˜ˆ์ œ ์ €์žฅ์†Œ ์˜์ด ๋ถ„๊ธฐ ์—์„œ ์ˆ˜ํ–‰ ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ tsconfig.lib.json ์˜ angularCompilerOptions ์•„๋ž˜์— "enableIvy": false ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์ด ์ฃผ์„์— ๋Œ€ํ•ด ํ•œ ๋‹จ๊ณ„ ๋” ๋‚˜์•„๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค angularCompilerOptions , ๋‚ด ์˜ค๋ฅ˜๋Š” vscode์—์„œ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค (๋‚ด ์˜ˆ์ œ โ€‹โ€‹ํ”„๋กœ์ ํŠธ๊ฐ€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์—ฌ์ „ํžˆ ๊นจ์กŒ์Šต๋‹ˆ๋‹ค)

๋ช…ํ™•ํžˆํ•˜๊ธฐ ์œ„ํ•ด v11.1.x ์—์žˆ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ์˜ ์ง€์นจ์— ๋”ฐ๋ผ Ivy ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
tsconfig.*.json ์„ (๋ฅผ) ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
... is not a known angular element ๊ฐ€ ํ‘œ์‹œ๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์•„์ด๋น„ ๋ชจ๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ค‘์ธ ๋ชจ๋“œ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด Output ํŒจ๋„๋กœ ์ด๋™ํ•˜์—ฌ Angular ์–ธ์–ด ์„œ๋น„์Šค๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ์•„์ด๋น„๋ฅผ ์–ธ๊ธ‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. (์•„๋ž˜ ์Šคํฌ๋ฆฐ ์ƒท ์ฐธ์กฐ).
ํ”„๋กœ์ ํŠธ์—์„œ Ivy ์–ธ์–ด ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด Ivy๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๋Š” ์—†์ง€๋งŒ Angular> = v9๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

Screen Shot 2021-02-01 at 3 15 40 PM

์œ„์˜ ์‚ฌํ•ญ์„ ๋ชจ๋‘ ํ™•์ธํ•œ ํ›„์—๋„ ํ™•์žฅ ๊ธฐ๋Šฅ์ด ์—ฌ์ „ํžˆ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉด ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ์—ด์–ด ์†Œ์Œ์„ ๋ถ„๋ฅ˜ํ•˜๊ณ  ์ค„์ผ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ์„ธ์š”. ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@kyliau ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, ์ €๋Š” ํ™•์‹คํžˆ ๊ทธ๊ฒƒ์„ ๋†“์ณค์Šต๋‹ˆ๋‹ค.

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