exposr v1.0.3
exposr
Simple node script helping with tagging and publishing semantic releases.
Why?
Primarily for myself. I a tool that allows me to publish packages easier while being flexible enough to tweak bits and parts in it. Atm it is only flexible in the sense that I can change it and publish a new version of it to reflect my personal needs, ideally this tool becomes more configurable (where needed) to be more generic and usable for anyone 😅
Install
yarn add exposr --dev
# or via npm
npm i exposr --devUsage
Once added to the project, you can use the exposr node binary like this in your package json:
{
"scripts": {
"release": "exposr publish",
"pre-release": "exposr publish --pre"
}
}Then you can just run yarn release (or npm run release) and exposr will do the rest for you 😊
Or just manually run the command in the root of your project:
npm i -g exposr
exposr publishOptions
Versioning
You can force a specific version or specific version bumps with the following arguments:
--version,-v- Specific version that should be used for the bump, e.g.
exposr publish --version 1.0.0
- Specific version that should be used for the bump, e.g.
--major- Force major bump
a.x.x→{a+1}.0.0
- Force major bump
--minor- Force minor bump
x.a.x→x.{a+1}.0
- Force minor bump
--patch- Force patch bump
x.x.a→x.x.{a+1}
- Force patch bump
--prerelease,--pre- Force pre-release version bump
x.x.x→x.x.x-a(orx.x.x-a→x.x.x-{a+1}), incl. publishing with dev tag, not stable tag, in npm
- Force pre-release version bump
What does it do?
1. — Bump package version
Based on your commits (and additional arguments passed to it) exposr will try to smartly determine the next version using conventional-recommended-bump following the semver standard. It will ask you to confirm the determined version, before bumping it in your projects package json.
2. — Create changelog
exposr goes through your git commits and uses them to create a changelog. For that, it will create a changelog.json file (which is the source of truth for future publications) as well as prepend a version section in the CHANGELOG.md.
3. — Add and commit the changed files
It will add and commit the changed package json and changelog files to git.
4. — Create and push version tag
It will create a version tag for the new version generated and will push all changes including the tag to the current git remote.
5. — Publish the package to npm
Finally it will run npm publish (or npm publish --tag=dev for pre-releases) to publish the new version on npm.
Todos
- Add config to opt out of certain steps
- Add config for file paths
- Add config for commit message
- Add dry-run mode
- Improve changelog
- Add config for changelog template