feat: search and install Schematics
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 25/100
- issue の種類
- 機能追加
- 明瞭さ
- 説明が足りない
- 活発さ
- 停滞
- 技術スタック
- angular, typescript
調査の方向性
packages/@angular/cli/tasks/schematic-search.ts とリンク先のプロトタイプコミットから始め、その動作を RFC の ng search の例と比較します。NPM レジストリと Schematics パッケージの識別がどのように動作することを想定されているかを確認し、インストールが ng add を通じて実装されたという注記も含めます。検索、対話的な選択、パッケージの検出、ローカルインストールの完了基準については、引き続き合意が必要です。
索引モデルが issue の本文から書いたものです。
説明
RFC: Search and install Angular CLI Schematics
tl;dr
The goal of this proposal is to add a new ng command allowing to search and install Angular CLI Schematics right from the command line, using the NPM registry. Read below for more technical details.
Longer version
The Angular CLI has introduced support for Schematics allowing developers to easily extend or even completely change the default behavior of the Angular CLI commands. With Schematics, we can (for instance)...
- use the official
ng updatecommand to update the Angular dependencies of a project (and more). - use the Nrwl Nx Workspace to scaffold enterprise-grade Angular applications with proven project structure and patterns.
- use your own Schematics to transform any Feature module to a Lazy Loading Feature module.
More generally, you can use Schematics to "[...] transforms to your project, such as create a new component or updating your code to fix breaking changes in a dependency. Or maybe you want to add a new configuration option or framework to an existing project". Read more on the angular.io.
The Angular community has already started creating custom Schematics, here are some of them:
- @nrwl/schematics
- @ngrx/schematics
- @ionic-angular/schematics
- @nativescript/schematics
- @angular-extensions/schematics
- @ssilvert/keycloak-schematic
- @decerto/schematics
- @michael.warneke/ng-schematics
- material-schematics
- ngx-schematics-collection
- angular-crud
- custom-schematics
- ng-schematics-utils
- enterprise-angular-generator
We expect the number of the Angular CLI Schematics to grow; hence, the goal of this thread is to discuss the ability to add a new ng command allowing to (right from the command line):
Note: the commands used below ng search ** are just for illustration purposes!
- Searching for available Schematics
> ng search foo_
● foo_abc (description) (popularity index)
○ foo_def (description) (popularity index)
○ foo_ghi (description) (popularity index)
○ foo_ijk (description) (popularity index)
- Interactively search for Schematics
> ng search
? Find and install Angular CLI Schematics: foo_
● foo_abc (description) (popularity index)
○ foo_def (description) (popularity index)
○ foo_ghi (description) (popularity index)
○ foo_ijk (description) (popularity index)
- Interactively installing Schematics
> ng search
? Find and install Angular CLI Schematics: bar_ [ENTER]
● bar_def (description) (popularity index)
○ bar_ijk (description) (popularity index)
Installing packages for tooling via npm...
Install Schematics
NOTE: This was implemented via theng addcommand.
> ng schematics install foo_abc foo_ghi
Installing...
In order for this search to be done, we will leverage the NPM infrastructure and use the public registry as the database and we need to be able to identify what NPM packages are actually Angular CLI Schematics. Here are different proposals:
- Use the current
schematicsproperty in thepackage.json, eg. see example:
{
...
"schematics": "./src/collection.json"
}
-
Use an NPM named scope, eg.
@ngxschematics(ngxbeing the community reserved prefix we agreed on (cc @IgorMinar) —@schematicsis already reserved for the official Schematics made by the Angular team). The community NPM scope (@ngxschematics) would obviously be owned (and maintained) by the Angular core team. So (community) Schematics authors will have to send PRs to that repository to make their Schematics available (listed) in the Angular CLI search command (discussed here). This approach is similar to the DefinitelyTyped project (@types/**). -
Have some sort of a "Market Place for Schematics" (out of the scope of this proposal). This could be merged with the previous solution.
-
Community Schematics authors would have to tag their schematics with an explicit set of tags, eg.
(angular, schematics). Community Schematics that aren't tagged using these keywords won't be listed by the Angular CLI search command (discussed here).
Other topics to cover (later) are:
- list, update or remove local Schematics.
- Replace an active Schematic, eg. defaults, with a new one.
The search process would be done by using 3rd party search APIs that interface with the NPM registry (offering probably better performances?), here are some of them:
Similar projects (inspiration):
Please use Github's emoji to express your interest in this draft.
cc @hansl @Brocco @filipesilva
[UPDATE] working prototype (https://github.com/manekinekko/angular-cli/blob/search-install-schematics/packages/%40angular/cli/tasks/schematic-search.ts)
[UPDATE] upgrade ptotype to v6.0.0-rc.6 (https://github.com/manekinekko/angular-cli/commit/37063374c731386b460fff925183a9d461d0a364)

- 主要言語
- TypeScript
- スター
- 27k
- フォーク
- 11.8k
- 平均マージ
- 16時間 35分
- マージ済み PR(30日)
- 176
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
angular/angular-cli のほかの issue
-
area: @angular/build gemini-triaged
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
angular/angular-cli#33955 ·
-
area: @angular/cli gemini-triaged
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
angular/angular-cli#33055 · コメント 1 件 · リアクション 3 件 ·
-
area: @angular/build gemini-triaged
難易度 4/5 3〜5日 初心者へのやさしさ 72/100
angular/angular-cli#34137 ·
-
angular/build:library area: @angular/build gemini-triaged
angular/angular-cli#34131 · 担当者 1 名 ·
-
angular/build:library area: @angular/build gemini-triaged
angular/angular-cli#34130 · 担当者 1 名 ·
angular/angular-cli の issue をすべて見る
似ている issue
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
dennys-bd/agent-hive#184 ·
-
Add: hunch オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
AbdelStark/awesome-typesafe#104 ·
-
ai-observability bug team/ai-observability
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
vicharanashala/fln#563 ·