์ด ๋ฌธ์ ๋ @ 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
์ต์ ์ ๋ณด. 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
๋ฐ" '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 ๋ฌธ์ ๊ฐ ์๋๋๋ค.
๋ฌธ์ ๋ ๋ ๊ฐ์ง์ ๋๋ค.
์ด๊ฒ์ด ์ ๋งค์ฐ ์ฑ๊ฐ์ ๋ฌธ์ ์ ๋๊น?
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ด๊ฐ ํ ์์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋์ผํ ์ํฉ์์ ์ผ๋ถ ์ฌ๋๋ค์ด ๋ฐ์ ๋ค์ผ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฌ์ฉ์์ ๋์ผํ ์กฐ๊ฑด (์ : ๊ฒ์ ๋ npm ํจํค์ง)์์ ๊ฒ์ ๊ฐ๋ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ค๋ ์ฌ๋๋ค์๊ฒ๋ ๋์์ด๋์ง ์์ต๋๋ค.
๊ฒ์ ๊ฐ๋ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์ค ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ์ก์ธ์ค ํ ์์๋ monorepo ๋๋ ์ ์ฌํ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
ํจํค์ง๊ฐ 'happy-library'๋ผ๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
tsconfig.json
์ ์
๋ฐ์ดํธํ์ฌ (๋๋ vscode๊ฐ ์์ ๋ด์ง ๋ชปํฉ๋๋ค ...) ํด๋น ํจํค์ง์ ๋ํ ๊ฒฝ๋ก ๋งคํ์ ์ถ๊ฐํ์ฌ ํจํค์ง์ ์์ค ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ฐ๋ฆฌ ํต๋๋ค.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 ํ์ฅ์ ์ ๊ฑฐํ๋ ๊ฒ์ผ๋ก ๋๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง์ด ๋๋ฌธ์ ๊ฐ๋ ฅํ ๊ฐ๋ฐ์ ์์ ๊ฒ์ ๋๋ค ...
@schankam : https://github.com/angular/vscode-ng-language-service/issues/457#issuecomment -725569238
@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๋ฅผ ์ฌ์ฉํด์ผํฉ๋๋ค.
์์ ์ฌํญ์ ๋ชจ๋ ํ์ธํ ํ์๋ ํ์ฅ ๊ธฐ๋ฅ์ด ์ฌ์ ํ ์์๋๋ก ์๋ํ์ง ์์ผ๋ฉด ์๋ก์ด ๋ฌธ์ ๋ฅผ ์ด์ด ์์์ ๋ถ๋ฅํ๊ณ ์ค์ผ ์ ์๋๋ก ๋์์ฃผ์ธ์. ๋๋จํ ๊ฐ์ฌํฉ๋๋ค!
@kyliau ๊ฐ์ฌํฉ๋๋ค, ์ ๋ ํ์คํ ๊ทธ๊ฒ์ ๋์ณค์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๊ฒ์ ๋ํ ์ง์ ์ด ์์์ต๋๊น?