Support resolving architect builders relative to project

Đang mở
#20,453 2 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
35/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
angular, typescript
Lĩnh vực
build-system, cli

Hướng nghiên cứu

Bắt đầu bằng cách theo dõi cách các builder của Architect được tham chiếu trong angular.json được phân giải, đồng thời so sánh hành vi đó với cơ chế phân giải schematic tương đối với dự án đã mô tả. Kiểm tra package.json ở thư mục gốc và package.json của ứng dụng kiểm thử, sau đó xác minh rằng build, serve, test, e2e, lint, extract-i18n và run có thể sử dụng các dependency builder của dự án mà không yêu cầu chúng ở thư mục gốc của repository.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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.
Ngôn ngữ chính
TypeScript
Star
27k
Fork
11.8k
Merge trung bình
16 giờ 35 phút
Pull request đã merge (30 ngày)
176

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của angular/angular-cli

Tất cả issue của angular/angular-cli

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.