Release It!
Interactive release tool for Git repositories. Supports to build and release to a distribution/component repository. Publish to npm.
Automatically increments version in package.json, commit, tag, push, publish, done.
Obviously, Release It has released itself. Cool, heh?! There's also a Grunt plugin.
Install
npm install release-it -g
Personally, I prefer to alias it to release
:
alias release="release-it"
The examples below assume this alias to be defined.
Configuration
Release It can do a lot out-of-the-box, but has plenty of options to configure it.
Help
Release It! v0.0.1
Usage: release <increment> [options]
Use e.g. "release minor" directly as shorthand for "release --increment=minor".
Options:
-c, --config Path to local configuration options [default: ".release.json"]
-d, --dry-run Do not touch or write anything, but show the commands and interactivity
-e, --debug Output exceptions
-f, --force Force tagging with Git
-h, --help Print help
-i, --increment Incrementing "major", "minor", or "patch" version; or specify version [default: "patch"]
-n, --non-interactive No interaction (assume default answers to questions)
-p, --publish Publish to npm
-v, --version Print version number
-V, --verbose Verbose output
Default Settings
{
"non-interactive": false,
"dry-run": false,
"verbose": false,
"force": false,
"pkgFiles": ["package.json"],
"increment": "patch",
"commitMessage": "Release %s",
"tagName": "%s",
"tagAnnotation": "Release %s",
"buildCommand": false,
"distRepo": false,
"distStageDir": ".stage",
"distBase": "dist",
"distFiles": ["**/*"],
"publish": false
}
If you also want to release to "distribution repo", you'll need to set distRepo
to a git endpoint (e.g. 'git@github.com:webpro/awesome-component.git'
).
Overrides
Place a .release.json
file and Release It will use it to overwrite default settings. You can use --config
if you want to use another filename/location. Most options can be set on the command-line (these will have highest priority).
What it does
Many steps need your confirmation before execution.
By default, with the current repository:
- The version in each of the
pkgFiles
will be incremented. - This change will be committed with the
commitMessage
. - This commit is tagged with
tagName
(and tagAnnotation
). The %s
will be replaced with the updated version. - The commit plus the tag are pushed.
- If no
distRepo
is configured, the package is published.
Additionally, if a distribution repository is configured:
- The plugin will create the distribution build using the
distBuildTask
Grunt task. - The
distStageDir
is where the plugin will clone the distRepo
. - The
distFiles
are copied here (normalized by removing the distBase
from the target path). - Steps 1-4 above are executed for the distribution repository.
- The package is published.
Usage
Make a "patch" release (increments the 0.0.x):
release
Make a patch, minor, major or specific version release with e.g.:
release minor
release 0.8.3
release 2.0.0-rc.3
You can also do a dry run, which won't write/touch anything, but does output the commands it would execute, and shows the interactivity:
release --dry-run
If you don't like questions and trust the tool, you can use the non-interactive
mode:
release --non-interactive
Credits
This tool uses ShellJS and Inquirer.js, two awesome projects that you need to check out anyway.
The following Grunt plugins have been a source of inspiration:
Why did I need to create yet another "release" tool/plugin? I think it..
- Should be a stand-alone CLI tool.
- Should be simple to release the current project you're working at.
- Feature releasing to a separate distribution repository.
- Should be as quiet or verbose as you need it.
License
MIT