Enables support for git-flow style releases via gulp
A GulpJS plugin that enables support for git-flow
style releases. It requires the
gitflow command line tool to
be installed on your system.
A proposed workflow revolving around the use of git as a central tool. Defines a
branching model to follow using best practices and convenience directives.
gulp-release
is a GulpJS plugin. It defines custom tasks that group common
flow-related behaviors when releasing software using git.
npm i --save-dev gulp-release
^1.9.0
~3.9
^8.0.0
^5.0.0
# Add node repositories
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
# Install dependencies
sudo apt-get install git-flow
sudo apt-get install -y nodejs
sudo npm i -g npm
sudo npm i -g gulp
In your gulpfile.js
declare:
'use strict';
const gulp = require('gulp');
const release = require('gulp-release');
release.register(gulp);
This will register tasks on your gulp
instance. After that, you’ll be able to
call (or depend upon) all the tasks described below, such as:
$ gulp release
You may pass in an options
configuration object to the register
method to
override some or all of the default settings.
'use strict';
const gulp = require('gulp');
const release = require('gulp-release');
release.register(gulp, { packages: ['package.json'] });
Here, the packages
property expects an ordered array of globs that matchjson
files containing version information (i.e: package.json
, bower.json
,component.json
). All version files will be updated on a release, but version
number will be read only from the first one.
Read next section for a complete set of available options.
register(gulpInst[, options])
Declares tasks on the gulpInst
gulp instance. options
is an optional object
that can be defined to override the following sensible defaults:
{
tasks: {
// Name of the main task (a.k.a, `gulp release`)
release: 'release'
},
messages: {
// Commmit message on version bumping
bump: 'Bump release version',
// Commit message on setting next "-dev" version on `develop`
next: 'Set next development version'
},
// Supports glob syntax
packages: ['package.json'],
// Suffix added on development versions (ie.: on `develop` branch)
devSuffix: '-dev',
// Path to a custom codenames file. See https://github.com/scriptwerx/gulp-codename/blob/master/codenames.json
codenames: 'my-codenames.json'
};
This parameters permits you to configure main task name, commit messages and.json
files containing a .version
attribute that will be bumped on a new
release.
release
Performs a full, automatic project release. Uses git flow release
internally.
Name is configurable.
It’s required that your version numbering follows semver
specifications.
gulp release [-v --version VERSION] [-t --type TYPE] [-m CODENAME] [-c --codenames PATH] [-p --push]
The repository you invoke this task on, must be git flow
enabled. Run git
flow init
if you haven’t already, before running gulp release
. Otherwise, the
task will fail.
-v
or --version
can be used to indicate a specific next version (such3.2.2-beta
). If unspecified, the version from your first configuredpackage.json
) will be used.-t
or --type
can be used to indicate types of version increment (MAJOR,0.0.2-dev
-> 0.0.2
).-m
provides a human readable “codename” for the release. One will be-c
or --codenames
provides a path to a.register()
config option if both are set.-p
or --push
indicate whether to push results (branches and tags) toorigin
or not after finishing the release process. Defaults to false
.This recipe will perform the following actions, sequentially (default option
values are assumed):
git flow release start -F <version>
. Where <version>
is either set-m
.develop
using "Bump release version"
asgit flow release finish -m <codename> <version>
.-dev
suffix (like 1.0.1-dev
).develop
using "Set next development
version"
as message.-p
(or --push
) flag was set, push all tags and local develop
andmaster
branches to origin
.See the
git flow release wiki
for details on what’s happening under the hood when callinggit flow release start|finish
.
MIT