Mastodon Feed: Post

Mastodon Feed

zkat@toot.cat wrote:

speccing out what an oro.kdl aka orogene package.json would look like, when using orogene's workspaces feature I'm poking at now. Is this anything? Credit to pnpm for the dependencies/dependency-groups thing, which it calls "catalogs".

I'm making things work a little different than they work in both NPM and pnpm, but I think doing things this way is WAY more intuitive in the end? Just one hard-working workspace: protocol that can pull in centrally-specified dependency versions, workspace members, or named dependency groups.

// Example for workspaces package {     name my-pkg     private } workspace {     members {         // A sub-package at this location will be accessible as         // dependencies { my-subpkg workspace: } (or "dependencies": {         // "my-subpkg": "workspace:" } if you're using package.json         //         // You can also specify what version it will bind to by using a         // specifier prefix, such at workspace:^ (the default if nothing is         // specified), workspace:* (the equivalent of foo *), workspace:~         // (the equivalent of foo ~1.2.3, where 1.2.3 is the current version         // in the member's package.json or oro.kdl file.         "./packages/my-subpkg"     }     dependencies {         // Each of these dependencies will also be accessible as workspace:         // dependencies, as if they were members, but their version only needs         // to be specified once.         react ^18.2.0         react-dom ^18.2.0     }     dependency-groups {         // This allows you to specify deps in a named group, allowing you to do         // workspace:react17, for example.         react17 {             react ^17.0.2             react-dom ^17.0.2         }     } }