eneajaho / ngx-libs

Angular Libraries Support lists community libs support for each Angular version
https://ngx-libs.com/
MIT License
76 stars 30 forks source link

Consume the compatibility matrix to check a project's dependencies #43

Open chihab opened 1 year ago

chihab commented 1 year ago

It would be handy if we can somehow consume this referential data from the outside.

There are many interesting tools we can build on top of this compatibility matrix.

For example a script that checks what libraries need to be updated when upgrading a project to some Angular version (Could be part of this repo actually)

Project example

"@angular/core": "^13.0.0"
"ngx-toast": "^14.0.0",
"ngx-old-legacy": "^13.0.0"

npx ngx-libs migrate 16 --check (check depedencies' versions)

*  You need to upgrade ngx-toast to version 17.0.0
*  ngx-old-legacy is not compatible with Angular 16

npx ngx-libs migrate 15 --apply (apply the updates (if compatible))

npx ngx-libs migrate --supported (search for common supported Angular version)

* You can peacefully migrate to Angular 15
* The latest Angular 16 version is not yet supported by some packages:
  - ngx-old-legacy
eneajaho commented 1 year ago

Yeah that is a good idea, there's another issue opened for this kind of feature: https://github.com/eneajaho/ngx-libs/issues/27

chihab commented 1 year ago

It would be great to have the matrix accessible from the outside, as an endpoint or a node lib..., so external tooling could also consume it.

eneajaho commented 1 year ago

For that we probably would need a server so what do you recommend?

nartc commented 1 year ago

@eneajaho add SSR then we can use the express server. Should have gone with Analog 😝

eneajaho commented 1 year ago

@nartc I can always merge a PR to convert the site to Analog with SSR and maybe why not cloudlfare workers LOL.

chihab commented 1 year ago

maybe just a json file in the repo is enough no? https://raw.githubusercontent.com/eneajaho/ngx-libs/master/package.json

the external script would just have to fetch the matrix from the repo: const ngxLibs = await (await fetch('https://raw.githubusercontent.com/eneajaho/ngx-libs/master/maxtrix.json')).json()