Tools to use on github actions for bumping version, changelogs on a monorepo.
pnpm add @websublime/workspace-tools
This package offer a set of functions to retrieve information about the monorepo and the packages that contain. It support all package managers including Bun (WIP).
Function | Description |
---|---|
getProjectRootPath(root?: string): string or undefined |
Get the root path of the project. |
getDefinedPackageManager(root?: string): string or undefined |
Get the package manager defined in the project. |
detectPackageManager(root: string): PackageManager or undefined |
Detect the package manager defined in the project. |
getPackages(cwd?: string): Array<PackageInfo> |
Get the list of packages in the monorepo. |
getPackageInfo(package_name: string, cwd?: string): PackageInfo |
Get PackageInfo for a package. |
getChangedPackages(sha?: string, cwd: string): Array<PackageInfo> |
Get the list of packages that have changed since the given sha ('main'). |
git_add(file: string, cwd?: string): boolean |
Stage a file. |
git_add_all(cwd?: string): boolean |
Stage all files. |
git_config(name: string, email: string, cwd?: string): boolean |
Git config user name and email. |
gitFetchAll(cwd?: string, fetch_tags?: boolean): boolean |
Execute a fetch command to get the latest changes from the remote repository. You can also retrieve tags |
gitCommit(message: string, body?: string, footer?: string cwd?: string): boolean |
Commit the changes. |
gitTag(tag: string, message?: string, cwd?: string): boolean |
Tag the repository with the given tag. |
gitPush(cwd?: string, follow_tags?: boolean): boolean |
Push the changes to the remote repository, including optional tags. |
gitCurrentBranch(cwd?: string): string or undefined |
Get the current branch name. |
gitCurrentSha(cwd?: string): string |
Get's the current commit id. |
gitPreviousSha(cwd?: string): string or undefined |
Get's the previous commit id. |
gitFirstSha(cwd?: string, branch?: string): string or undefined |
Get's the first commit id in a branch. Compare is done between branch..Head, and it should be used as main..HEAD |
isWorkdirUnclean(cwd?: string): boolean |
Check if the workdir is unclean (uncommited changes). |
gitCommitBranchName(sha: string, cwd?: string): string or undefined |
Get the branch name for the commit id. |
gitAllFilesChangedSinceSha(sha: string, cwd?: string): Array<String> |
Get all files changed sinc branch, commit id etc. |
getDivergedCommit(sha: string, cwd?: string): string or undefined |
Get the diverged commit from the given sha (main). |
getCommitsSince(cwd?: string, since?: string, relative?: string): Array<Commit> |
Get the commits since the given sha (main) for a particular package. |
getAllFilesChangedSinceBranch(package_info: Array<PackageInfo>, branch: string, cwd?: string): Array<String> |
Get all the files changed for a branch (main). |
getLastKnownPublishTagInfoForPackage(package_info: PackageInfo, cwd?: string): Array<PublishTagInfo> |
Get the last known publish tag info for a particular package. |
getLastKnownPublishTagInfoForAllPackages(package_info: Array<PackageInfo>, cwd?: string): Array<PublishTagInfo> |
Get the last known publish tag info for all packages. |
getRemoteOrLocalTags(cwd?: string, local?: boolean): Array<RemoteTags> |
Get all the tags in the remote or local repository. |
getConventionalForPackage(package_info: PackageInfo, no_fetch_all?: boolean cwd?: string, conventional_options?: ConventionalPackageOptions): ConventionalPackage |
Get the conventional commits for a particular package, changelog output and package info. |
getBumps(options: BumpOptions): Array<BumpPackage> |
Output bumps version for packages and it's dependencies |
initChanges(cwd?: string, change_options?: ChangesOptions): ChangesFileData |
Creat changes file or retrieve is data if already exist |
addChange(change: Change, cwd?: string): boolean |
Adds a new change to the change file |
removeChange(branch_name: String, cwd?: string): boolean |
Removes the change from the changes files. |
changeExist(branch_name: string, packages_name: Array<string>, cwd?: string): boolean |
Check if change already exist. |
getChange(branch_name: string, cwd?: string): Array<Change> |
Get the list of changes for the branch. |
getChanges(cwd?: string): Changes |
Get all changes. |
getPackageChange(package_name: string, branch: string, cwd?: string): Changes |
Get a change by package name. |
changesFileExist(cwd?: string): boolean |
Check if .changes.json file exist |
- Install the latest
Rust
- Install
Node.js@16+
which fully supportedNode-API
- Run
corepack enable
- pnpm
- pnpm build
- pnpm test
And you will see:
$ ava --verbose
✔ get defined package manager
─
2 tests passed
✨ Done in 1.12s.
Ensure you have set your NPM_TOKEN in the GitHub
project setting.
In Settings -> Secrets
, add NPM_TOKEN into it.
When you want to release the package:
npm run build
npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease [--preid=<prerelease-id>] | from-git]
git push
GitHub actions will do the rest job for you.