Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Support resolving architect builders relative to project

未关闭
#20,453 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
35/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
停滞
技术栈
angular, typescript
领域
build-system, cli

调研方向

首先跟踪 angular.json 中引用的 Architect builder 是如何解析的,并将该行为与所描述的项目相对 schematic 解析进行比较。检查根目录下的 package.json 和测试应用的 package.json,然后验证 build、serve、test、e2e、lint、extract-i18n 和 run 能够使用项目的 builder 依赖,而不要求这些依赖位于 repository 根目录。

由索引模型根据 Issue 内容生成。

描述

area: @angular/cli feature feature: insufficient votes

🚀 Feature request

Command (mark with an x)
  • new
  • build
  • serve
  • test
  • e2e
  • generate
  • add
  • update
  • lint
  • extract-i18n
  • run
  • config
  • help
  • version
  • doc
Description

Schematics are loaded relative to the project first, and if the collection isn't found in the project then it's resolved in the folder the angular.json is in. This is great because it allows for situations where multiple versions of a collection are in use, or for collections that require peer dependencies.

The same behaviour is currently not present in architect builders. Those are only resolved in the folder the angular.json file is in, making certain situations impossible.

A very specific case: I've got a repository that contains tooling, and I'm using typescript 4.2 for this repo. I'm using the angular CLI to configure the projects in the repo, with a homebrew architect builder to create npm packages to run in node.
Now I want to add an angular application to the repo to test packages in the repo, as the tool in question is @ngx-playwright/jest, meant for using Jest and Playwright to run e2e tests.
However, building the angular app only works if I install @angular-devkit/build-angular in the root package.json file, which requires @angular/compiler-cli, @angular/compiler, @angular/core, rxjs and zone.js as well. It also requires typscript@>= 4.0 < 4.2 which clashes with the 4.2.3 that I'm using throughout the repo.

Note: I'm using a package manager that doesn't hoist dependencies (i.e. the behaviour of yarn 2's pnp linker or pnpm)

Describe the solution you'd like

I'd like to be able to install @angular-devkit/build-angular in the test application's folder instead of the repo root. This package.json already contains all necessary peer dependencies and it can use 4.1 without me having to downgrade typescript throughout the entire repo.

Describe alternatives you've considered
  • Use a package manager that hoists dependencies. This allows for installing the @angular-devkit/build-angular package in the test app's folder while it'll still end up in the root node_modules so the angular CLI can find it. It will still find the wrong version of typescript though, so I'm still stuck.
  • Downgrade my repo to typescript 4.1: this might be possible, but it feels very wrong that the one angular app in the repo should define the typescript version being used to build the node packages throughout the entire repo as well as the typescript language server version used by VS Code.
  • Create a separate angular.json in the test app's folder. This is the solution I'm going for, but if I have multiple angular.json files I'm losing a lot of the ergonomics the angular CLI normally offers.
主要语言
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 摘要。