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/typescript-http-client |
Basketry generator for TypeScript HTTP API clients. | |
@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
versionin the merge. - Skips any
name@versionalready 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
latestfor 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.