'ng update' does not work with yarn workspaces
- 主要語言
- TypeScript
- 星號
- 27k
- 分支
- 11.8k
- 平均合併
- 14 小時 23 分鐘
- 30 天內合併 PR
- 162
描述
# 🐞 Bug report
### Command (mark with an `x`)
```
- [ ] new
- [ ] build
- [ ] serve
- [ ] test
- [ ] e2e
- [ ] generate
- [ ] add
- [X] update
- [ ] lint
- [ ] xi18n
- [ ] run
- [ ] config
- [ ] help
- [ ] version
- [ ] doc
```
### Is this a regression?
No
### Description
I am utilizing yarn workspaces -feature in my project. Problem is that I have to keep Angular & AngularCLI dependencies on root packages.json, otherwise 'ng update' command can't figure out the version I currently have. I'd rather keep root package.json clean and move Angular & CLI dependencies to project/package.json to keep things isolated.
Looking at the [code](https://github.com/angular/angular-cli/blob/af93227f3295e918771e018d7d0fabbef774f1d1/packages/angular/cli/commands/update-impl.ts#L123), update command resolves dependencies from root package, even when command is executed on package folder. Would it be possible to change behavior in a way that update would first check package dependencies and the fall back to root if nothing is found?
## 🔬 Minimal Reproduction
- init yarn workspace project as follows: https://yarnpkg.com/lang/en/docs/workspaces/
- init angular app with cli and move dependencies from root package.json to workspace-a/package.json (example from previous step)
- wait until new angular version is available
- cd to 'workspace-a' and run 'ng update'. Command fails to find any dependencies to update.
## 🔥 Exception or Error
N/A
## 🌍 Your Environment
Angular CLI: 8.0.3
Node: 10.15.3
OS: win32 x64
Angular: 8.0.1
... animations, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router, service-worker
Package Version
-----------------------------------------------------------
@angular-devkit/architect 0.800.3
@angular-devkit/build-angular 0.800.3
@angular-devkit/build-optimizer 0.800.3
@angular-devkit/build-webpack 0.800.3
@angular-devkit/core 8.0.3
@angular-devkit/schematics 8.0.3
@angular/cli 8.0.3
@angular/pwa 0.800.3
@ngtools/webpack 8.0.3
@schematics/angular 8.0.3
@schematics/update 0.800.3
rxjs 6.4.0
typescript 3.4.5
webpack 4.30.0
Root package.json:
"dependencies": {},
"devDependencies": {
"npm-run-all": "^4.1.5"
},
'workspace-a/package.json':
"dependencies": {
"@angular/animations": "~8.0.1",
"@angular/common": "~8.0.1",
"@angular/compiler": "~8.0.1",
"@angular/core": "~8.0.1",
"@angular/forms": "~8.0.1",
"@angular/platform-browser": "~8.0.1",
"@angular/platform-browser-dynamic": "~8.0.1",
"@angular/pwa": "^0.800.3",
"@angular/router": "~8.0.1",
"@angular/service-worker": "~8.0.1",
"@auth0/angular-jwt": "^2.1.0",
"@ngx-translate/core": "^11.0.1",
...
"rxjs": "~6.4.0",
"tslib": "^1.9.0",
"zone.js": "~0.9.1"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.800.0",
"@angular/cli": "~8.0.3",
"@angular/compiler-cli": "~8.0.1",
"@angular/language-service": "~8.0.1",
...
}
**Anything else relevant?**
貢獻指南
研究方向
先從 packages/angular/cli/commands/update-impl.ts 中約第 123 行連結的 update 命令實作開始,然後使用一個僅在 workspace-a/package.json 中包含 Angular 相依性的 Yarn workspace 重現該失敗。驗證從 workspace 目錄進行相依性解析時的行為;當 ng update 能夠找到並更新 workspace 的 Angular 相依性,且不要求它們存在於 root package.json 中時,即表示完成。
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- angular, node.js, typescript
- 領域
- cli, tooling
- Issue 類型
- 缺陷
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 活躍度
- 停滯
- 描述清晰度
- 基本清楚
- 新手友好度
- 45/100