This repository is the monorepo for Basketry components implemented in TypeScript. It uses NPM workspaces to manage multiple packages that share tooling, CI, and release automation.
Package | Version | Description |
---|---|---|
@basketry/express |
Basketry generator for ExpressJS routers and handlers. | |
@basketry/typescript |
Basketry generator for TypeScript interfaces, types, and enums, and more. | |
@basketry/typescript-dtos |
Basketry generator for Data Transfer Objects (DTOs) and associated mapper functions. | |
@basketry/zod |
Basketry generator for Zod validation schemas. |
This repo uses two GitHub Actions workflows:
Open a version PR for a workspace:
- Run the Version workflow manually in Actions.
- Inputs:
workspace
: the npm workspace name (e.g.,@basketry/typescript
)newversion
: semver bump or exact version (e.g.,minor
,1.2.3
,prerelease
, etc.)preid
(optional): prerelease tag (e.g.,beta
,rc
)
This workflow only opens a PR with the version change for that package that describes the specific version that will be published along with any changes to dist tags. Review and merge as usual.
When a workspace's package version changes, the Publish workflow is automatically run which:
- Detects which workspaces changed their
version
in the merge. - Skips any
name@version
already published on npm. - Publishes each remaining workspace with
npm publish --provenance
. - Applies a Git tag per release using the convention
<package>@<version>
(e.g.,@basketry/typescript@1.2.3
). - Uses
latest
for stable releases; for prereleases, uses the prerelease identifier as the dist-tag (e.g.,beta
,rc
).
Note that the Publish workflow will trigger a publish anytime a workspace's package version changes, even if that change was not initiated from a Version PR. If multiple packages publish from the same merge, each gets its own tag pointing at the merge commit.