Package Exports
- release-it
- release-it/lib/config
- release-it/lib/log
- release-it/lib/tasks
- release-it/lib/util
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (release-it) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
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
(andtagAnnotation
). 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 thedistRepo
. - The
distFiles
are copied here (normalized by removing thedistBase
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.