publish-release
v1.6.1
Published
Create GitHub releases with assets
Downloads
2,379
Readme
publish-release
Create GitHub releases with assets from CLI, or from JS.
Installation
npm install --save publish-release
npm install -g publish-release # CLI
CLI Usage
The CLI looks in 2 places for configuration: arguments passed, and a publishRelease
object (see the API usage below for the format) in the package.json
. If it can't find the info it needs from those places, it will run a wizard. This means that you can create a release just by running publish-release
, and following the wizard.
$ publish-release --help
Usage: publish-release {options}
Options:
--token [token] GitHub oAuth token.
--owner [owner] GitHub owner of the repository.
Defaults to parsing repository field in
the project's package.json
--repo [repo] GitHub repository name.
Defaults to parsing repository field in
the project's package.json
--tag [tag] Git tag to base the release off of.
Defaults to latest tag.
--name [name] Name of the new release.
Defaults to the name field in the
package.json, plus the git tag.
--notes [notes] Notes to add to release, written in Markdown.
Defaults to opening the $EDITOR.
--template [path to template] Markdown file to open for editing notes.
Will open the template in $EDITOR.
--draft Pass this flag to set the release as a draft.
--prerelease Pass this flag to set the release as a
prerelease.
--reuseRelease Pass this flag if you don't want the plugin to create a new release if one already
exists for the given tag.
--reuseDraftOnly Pass this flag if you only want to reuse a release if it's a draft. It prevents
you from editing already published releases.
--skipAssetsCheck Don't check if assets exist or not. False by default.
--skipDuplicatedAssets Pass this flag if you don't want the plugin to replace assets with the same
name. False by default.
--skipIfPublished Pass this flag if you don't want a new release to be created if a release with
the same tag has already been published (is not a draft). False by default.
--editRelease Pass this flag if you want to edit release name, notes, type and target_commitish.
It will need reuseRelease or/and reuseDraftOnly true to edit the release.
--deleteEmptyTag Pass this flag if you want to delete an empty tag after editing it. Usually happens
when you edit from `prerelease or release` to `draft`.
--assets [files] Comma-separated list of filenames.
Ex: --assets foo.txt,bar.zip
--apiUrl [apiurl] Use a custom API URL to connect to GitHub Enterprise instead of github.com.
Defaults to "https://api.github.com"
Ex: --apiUrl "https://myGHEserver/api/v3"
--target_commitish [commitish] Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA.
Defaults to the default branch of the repository.
Ex: --target_commitish "master"
API Usage
Using it from the API will not inherit any configuration properties from other sources (i.e. the package.json), and requires you to pass all properties in yourself.
var publishRelease = require('publish-release')
publishRelease({
token: 'token',
owner: 'remixz',
repo: 'publish-release',
tag: 'v1.0.0',
name: 'publish-release v1.0.0',
notes: 'very good!',
draft: false,
prerelease: false,
reuseRelease: true,
reuseDraftOnly: true,
skipAssetsCheck: false,
skipDuplicatedAssets: false,
skipIfPublished: false,
editRelease: false,
deleteEmptyTag: false,
assets: ['/absolute/path/to/file'],
apiUrl: 'https://myGHEserver/api/v3',
target_commitish: 'master'
}, function (err, release) {
// `release`: object returned from github about the newly created release
})
publish-release
emits the following events on the API:
create-release
- Emits before the request is made to create the release.created-release
- Emits after the request is made successfully.reuse-release
- Emits if, instead of creating a new release, the assets will be uploaded to an existing one (if one can be found for the given tag).upload-asset
-{name}
- Emits before an asset file starts uploading. Emits thename
of the file.upload-progress
-{name, progress}
- Emits while a file is uploading. Emits thename
of the file, and aprogress
object fromprogress-stream
.uploaded-asset
-{name}
- Emits after an asset file is successfully uploaded. Emits thename
of the file.duplicated-asset
-{name}
- Emits after found a duplicated asset file. Emits thename
of the file.duplicated-asset-deleted
-{name}
- Emits after delete a duplicated asset file. Emits thename
of the file.edit-release
-{object}
Emits when will edit a release. Emits the actual releaseobject
.edited-release
-{object}
Emits after edit a release. Emits the modifiedobject
.deleted-tag-release
-{name}
Emits after editing release from prerelease or release to draft, preventing from leaving an empty tag for a edited release. Emits the deleted tagname
string.
Usage with Gulp
Please see the Gulp version of this module: https://github.com/Aluxian/gulp-github-release