'ng update' does not work with yarn workspaces

未关闭
#14,841 19 条评论 33 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
45/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
停滞
技术栈
angular, node.js, typescript
领域
cli, tooling

调研方向

先从 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 内容生成。

描述

area: @angular/cli feature feature: insufficient votes hotlist: devRel ng update DX

🐞 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, 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?

主要语言
TypeScript
星标
27k
派生
11.8k
平均合并
16 小时 35 分钟
30 天内合并 PR
176

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

angular/angular-cli 的其他 Issue

查看 angular/angular-cli 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。