Vscode-ng-language-service: monorepo/๋‹ค์ค‘ ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ์œผ๋กœ ngcc ์ถฉ๋Œ - Ivy Native LS

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

๋ฒ„๊ทธ ์„ค๋ช…

VSCode ํ™•์žฅ์€ ์—ฌ๋Ÿฌ tsconfig๊ฐ€ ์žˆ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  tsconfig ์˜†์— ์žˆ๋Š” node_modules ํด๋”๋ฅผ ngcc ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์žฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด

  1. https://github.com/jscutlery/convoyr ์™€ ๊ฐ™์€ ์ €์žฅ์†Œ์—์„œ ํ™•์žฅ ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”
  2. app.component.ts ์—ด๊ธฐ

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™

์ถฉ๋Œํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋กœ๊ทธ

[Info  - 8:18:20 PM] Angular language server process ID: 91911
[Info  - 8:18:20 PM] Using typescript/lib/tsserverlibrary v4.0.5 from /.vscode/extensions/angular.ng-template-0.1101.0-next.1/node_modules/typescript/lib/tsserverlibrary.js
[Info  - 8:18:20 PM] Using @angular/language-service/bundles/ivy v11.1.0-next.3 from /.vscode/extensions/angular.ng-template-0.1101.0-next.1/node_modules/@angular/language-service/bundles/ivy.js
[Info  - 8:18:20 PM] Log file: /Library/Application Support/Code/logs/20201218T201630/exthost3/Angular.ng-template/nglangsvc.log
[Error - 8:18:25 PM] Cannot read file '/dev/jscutlery/convoyr/dev/jscutlery/convoyr/tsconfig.json'.
No inputs were found in config file '/dev/jscutlery/convoyr/dev/jscutlery/convoyr/apps/sandbox/tsconfig.json'. Specified 'include' paths were '["**/*.ts"]' and 'exclude' paths were '[]'.
Error: ENOENT: no such file or directory, scandir '/dev/jscutlery/convoyr/apps/sandbox/node_modules'
    at Object.readdirSync (fs.js:854:3)
    at Object.fs.readdirSync (electron/js2c/asar.js:621:39)
    at NodeJSFileSystem.readdir (/dev/jscutlery/convoyr/node_modules/@angular/compiler-cli/src/ngtsc/file_system/src/node_js_file_system.js:53:23)
    at EntryPointCollector.walkDirectoryForPackages (/dev/jscutlery/convoyr/node_modules/@angular/compiler-cli/ngcc/src/entry_point_finder/entry_point_collector.js:63:56)
    at /dev/jscutlery/convoyr/node_modules/@angular/compiler-cli/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.js:62:100
    at Object.trackDuration (/dev/jscutlery/convoyr/node_modules/@angular/compiler-cli/ngcc/src/entry_point_finder/utils.js:93:22)
    at DirectoryWalkerEntryPointFinder.walkBasePathForPackages (/dev/jscutlery/convoyr/node_modules/@angular/compiler-cli/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.js:62:39)
    at DirectoryWalkerEntryPointFinder.findEntryPoints (/dev/jscutlery/convoyr/node_modules/@angular/compiler-cli/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.js:40:30)
    at /dev/jscutlery/convoyr/node_modules/@angular/compiler-cli/ngcc/src/execution/analyze_entry_points.js:28:41
    at new ClusterMaster (/dev/jscutlery/convoyr/node_modules/@angular/compiler-cli/ngcc/src/execution/cluster/master.js:45:30)
[Error - 8:18:26 PM] Failed to run ngcc for /dev/jscutlery/convoyr/apps/sandbox/tsconfig.json:
    ngcc for /dev/jscutlery/convoyr/apps/sandbox/tsconfig.json returned exit code 1, stderr: 
    Language service will remain disabled.

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

@yjaaidi ์—ฌ๊ธฐ์—์„œ ๋ฌธ์ œ๋Š” ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ๋„/๊ฐ๋„์—์„œ ์—ด ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค! ๋‘ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ฐ„์— ์–ธ์–ด ์„œ๋น„์Šค ๋ณด๊ณ ์„œ๋ฅผ ํ†ตํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•/์—ฌ๋ถ€๋ฅผ ์•„์ง ๊ฒฐ์ •ํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์ง€๊ธˆ์€ ๋‘˜ ๋‹ค ์ฃผ์‹œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Keen๊ณผ ๋‚˜๋Š” ์–ด์ œ ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ง์„ ์ด๋ฃจ์—ˆ๊ณ  ์—ฐ๊ฒฐ๋œ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 4๊ฐœ์˜ ๊ฐœ๋ณ„ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ทผ๋ณธ ์›์ธ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜์ • ์‚ฌํ•ญ์ด ๋ณ‘ํ•ฉ๋˜์–ด 1์›”์˜ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ค€๋น„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹ ๊ณ  ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

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

๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

node_modules ๊ฐ€ ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์™€ ๋‹ฌ๋ฆฌ cwd ๊ฐ€ tsconfig.json ์˜ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ˆ˜๋™์œผ๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ ngcc๊ฐ€ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

https://github.com/angular/vscode-ng-language-service/blob/132b2051c44de5504bc77776430c066ecc5fa88a/server/src/ngcc.ts#L36 -L44

convoyr/apps/sandbox ์—์„œ ngcc๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๊ฒŒ์‹œ ํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ์‹คํŒจ๋ฅผ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.
๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์‹คํ–‰ํ•˜๋ฉด ngcc๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ngcc๊ฐ€ ์‹คํŒจํ•˜๋”๋ผ๋„ ์–ธ์–ด ์„œ๋น„์Šค๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด #1041์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๋„์™€ ์ค„ ์ˆ˜์žˆ์–ด์„œ ๊ธฐ๋ป!

github.com/angular/angular์—์„œ ๋ฌธ์ œ๋ฅผ ์—ด์–ด์•ผ ํ•˜๋‚˜์š”?

@yjaaidi ์—ฌ๊ธฐ์—์„œ ๋ฌธ์ œ๋Š” ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ๋„/๊ฐ๋„์—์„œ ์—ด ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค! ๋‘ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ฐ„์— ์–ธ์–ด ์„œ๋น„์Šค ๋ณด๊ณ ์„œ๋ฅผ ํ†ตํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•/์—ฌ๋ถ€๋ฅผ ์•„์ง ๊ฒฐ์ •ํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์ง€๊ธˆ์€ ๋‘˜ ๋‹ค ์ฃผ์‹œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Keen๊ณผ ๋‚˜๋Š” ์–ด์ œ ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ง์„ ์ด๋ฃจ์—ˆ๊ณ  ์—ฐ๊ฒฐ๋œ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 4๊ฐœ์˜ ๊ฐœ๋ณ„ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ทผ๋ณธ ์›์ธ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜์ • ์‚ฌํ•ญ์ด ๋ณ‘ํ•ฉ๋˜์–ด 1์›”์˜ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ค€๋น„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹ ๊ณ  ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๊ทธ๊ฒƒ์€ ๋นจ๋ž๋‹ค. ์ž˜ ํ–ˆ์–ด!
๋‚ด๊ฐ€ ๋„์šธ ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”.

์ด ๋ฌธ์ œ๋Š” ํ™œ๋™์ด ์—†์–ด ์ž๋™์œผ๋กœ ์ž ๊ฒผ์Šต๋‹ˆ๋‹ค.
์œ ์‚ฌํ•˜๊ฑฐ๋‚˜ ๊ด€๋ จ๋œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ƒˆ ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์‹ญ์‹œ์˜ค.

์ž๋™ ๋Œ€ํ™” ์ž ๊ธˆ ์ •์ฑ… ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.

_์ด ์ž‘์—…์€ ๋ด‡์— ์˜ํ•ด ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค._

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