eik-lib / cli

CLI to publish packages and import maps to Eik, and to manage aliases
https://eik.dev
1 stars 3 forks source link

The CLI should have a way to list the actual versions behind current import maps #559

Open wkillerud opened 1 month ago

wkillerud commented 1 month ago

It would be useful to have a command to list the actual versions an import map resolves to (behind the alias).

I imagine the command would print an output similar to npm outdated, with the Alias to the left, it's Mapped to version next to it, and the Installed version from package.json to the right.

It should warn if Eik resolves to a lower version than package.json. This validation should give a non-zero exit code so it can be run on CI and cause a build to fail.

digitalsadhu commented 1 month ago

I'm thinking something like this:

$ eik outdated
::  PACKAGE  > my-cool-app | org: finn | url: https://assets.finn.no/pkg/my-cool-app

Package      Alias Version Latest Package.json
lit          v2    2.0.1   2.0.2  3.0.1
lit-element  v4    4.0.5   4.0.5  4.0.5
lit-html     v3    3.0.1   3.0.2  3.0.1
..etc..
$ eik outdated custom-elements --type=map
::  MAP  > custom-elements | org: finn | url: https://assets.finn.no/map/custom-elements

Package      Alias Version Latest
lit          v2    2.0.1   2.0.2
lit-element  v4    4.0.5   4.0.5
lit-html     v3    3.0.1   3.0.2
..etc..
$ eik outdated lit --type=npm 
::  NPM  > lit | org: finn | url: https://assets.finn.no/npm/lit

Alias Version Latest
v1    1.0.1   1.0.2
v2    2.0.5   2.0.5
v3    3.0.1   3.0.2
..etc..
$ eik outdated @warp-ds/css --type=package 
::  PACKAGE  > @warp-ds/css | org: finn | url: https://assets.finn.no/pkg/@warp-ds/css

Alias Version        Latest
v1    1.10.1         1.10.1
v2    2.0.0-next.5   2.0.0-next.5
..etc..
wkillerud commented 1 month ago

What is Latest in this case? Newest version on Eik? That would be helpful for import map and alias maintainers for sure 👍

I'm looking for a way to give app developers a tool to see if their runtime/client-side dependency will be different from their local/server-side version.

digitalsadhu commented 1 month ago

Ok cool. I've added another example to cover that use case then. eik outdated without args would read eik.json/package.json for necessary values, scan import maps being used as well as package.json deps and then lists the table as shown.