Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/remixz/publish-release
Create GitHub releases with assets from CLI
https://github.com/remixz/publish-release
Last synced: 20 days ago
JSON representation
Create GitHub releases with assets from CLI
- Host: GitHub
- URL: https://github.com/remixz/publish-release
- Owner: remixz
- License: mit
- Created: 2015-03-28T02:26:57.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2022-12-06T21:43:54.000Z (almost 2 years ago)
- Last Synced: 2024-10-24T15:58:12.854Z (27 days ago)
- Language: JavaScript
- Size: 400 KB
- Stars: 71
- Watchers: 5
- Forks: 20
- Open Issues: 21
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
## publish-release
Create GitHub releases with assets from CLI, or from JS.
[![Build Status](https://travis-ci.org/remixz/publish-release.svg?branch=master)](https://travis-ci.org/remixz/publish-release)
[![js-standard-style](https://raw.githubusercontent.com/feross/standard/master/badge.png)](https://github.com/feross/standard)
### Installation
[![NPM](https://nodei.co/npm/publish-release.png)](https://nodei.co/npm/publish-release/)
```
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](#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.
```js
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 the `name` of the file.
* `upload-progress` - `{name, progress}` - Emits while a file is uploading. Emits the `name` of the file, and a `progress` object from [`progress-stream`](https://github.com/freeall/progress-stream).
* `uploaded-asset` - `{name}` - Emits after an asset file is successfully uploaded. Emits the `name` of the file.
* `duplicated-asset` - `{name}` - Emits after found a duplicated asset file. Emits the `name` of the file.
* `duplicated-asset-deleted` - `{name}` - Emits after delete a duplicated asset file. Emits the `name` of the file.
* `edit-release` - `{object}` Emits when will edit a release. Emits the actual release `object`.
* `edited-release` - `{object}` Emits after edit a release. Emits the modified `object`.
* `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 tag `name` string.### Usage with Gulp
Please see the Gulp version of this module: https://github.com/Aluxian/gulp-github-release