JavaScript API
Usage
constsemanticRelease=require("semantic-release");const {WritableStreamBuffer }=require("stream-buffers");conststdoutBuffer=newWritableStreamBuffer();conststderrBuffer=newWritableStreamBuffer();try {constresult=awaitsemanticRelease( {// Core options branches: ["+([0-9])?(.{+([0-9]),x}).x","master","main","next","next-major", { name:"beta", prerelease:true }, { name:"alpha", prerelease:true }, ], repositoryUrl:"https://github.com/me/my-package.git",// Shareable config extends:"my-shareable-config",// Plugin options githubUrl:"https://my-ghe.com", githubApiPathPrefix:"/api-prefix", }, {// Run semantic-release from `/path/to/git/repo/root` without having to change local process `cwd` with `process.chdir()` cwd:"/path/to/git/repo/root",// Pass the variable `MY_ENV_VAR` to semantic-release without having to modify the local `process.env` env: {...process.env, MY_ENV_VAR:"MY_ENV_VAR_VALUE" },// Store stdout and stderr to use later instead of writing to `process.stdout` and `process.stderr` stdout: stdoutBuffer, stderr: stderrBuffer, } );if (result) {const {lastRelease,commits,nextRelease,releases }= result;console.log(`Published${nextRelease.type} release version${nextRelease.version} containing${commits.length} commits.` );if (lastRelease.version) {console.log(`The last release was "${lastRelease.version}".`); }for (constreleaseof releases) {console.log(`The release was published with plugin "${release.pluginName}".`); } }else {console.log("No release published."); }// Get stdout and stderr contentconstlogs=stdoutBuffer.getContentsAsString("utf8");consterrors=stderrBuffer.getContentsAsString("utf8");}catch (err) {console.error("The automated release failed with %O", err);}API
semanticRelease([options], [config]) => Promise
Runsemantic-release and returns aPromise that resolves to aResult object.
options
Type:Object
semantic-release options.
Can be used to set anycore option orplugin options.
Each option, will take precedence over options configured in theconfiguration file andshareable configurations.
config
Type:Object
semantic-release configuration specific for API usage.
cwd
Type:StringDefault:process.cwd()
The current working directory to use. It should be configured to the root of the Git repository to release from.
It allows to runsemantic-release from a specific path without having to change the local processcwd withprocess.chdir().
env
Type:ObjectDefault:process.env
The environment variables to use.
It allows to runsemantic-release with specific environment variables without having to modify the localprocess.env.
stdout
Type:stream.WritableDefault:process.stdout
Thewritable stream used to log information.
It allows to configuresemantic-release to write logs to a specific stream rather than the localprocess.stdout.
stderr
Type:stream.WritableDefault:process.stderr
Thewritable stream used to log errors.
It allows to configuresemantic-release to write errors to a specific stream rather than the localprocess.stderr.
Result
Type:ObjectBoolean
An object withlastRelease,nextRelease,commits andreleases if a release is published orfalse if no release was published.
lastRelease
Type:Object
Information related to the last release found:
version
String
The version of the last release.
gitHead
String
The sha of the last commit being part of the last release.
channel
String
The distribution channel on which the last release was initially made available (undefined for the default distribution channel).
Note: If no previous release is found,lastRelease will be an emptyObject.
Example:
{ gitHead: 'da39a3ee5e6b4b0d3255bfef95601890afd80709', version: '1.0.0', gitTag: 'v1.0.0', channel: 'next'}commits
Type:Array<Object>
The list of commit(s) included in the new release.Each commit object has the following properties:
commit
Object
The commit abbreviated and full hash.
commit.long
String
The commit hash.
commit.short
String
The commit abbreviated hash.
tree
Object
The commit abbreviated and full tree hash.
tree.long
String
The commit tree hash.
tree.short
String
The commit abbreviated tree hash.
author
Object
The commit author information.
author.name
String
The commit author name.
author.email
String
The commit author email.
author.short
String
The commit author date.
committer
Object
The committer information.
committer.name
String
The committer name.
committer.email
String
The committer email.
committer.short
String
The committer date.
subject
String
The commit subject.
body
String
The commit body.
message
String
The commit full message (subject andbody).
hash
String
The commit hash.
committerDate
String
The committer date.
Example:
[ { commit: { long: '68eb2c4d778050b0701136ca129f837d7ed494d2', short: '68eb2c4' }, tree: { long: '7ab515d12bd2cf431745511ac4ee13fed15ab578', short: '7ab515d' }, author: { name: 'Me', email: 'me@email.com', date: 2018-07-22T20:52:44.000Z }, committer: { name: 'Me', email: 'me@email.com', date: 2018-07-22T20:52:44.000Z }, subject: 'feat: a new feature', body: 'Description of the new feature', hash: '68eb2c4d778050b0701136ca129f837d7ed494d2', message: 'feat: a new feature\n\nDescription of the new feature', committerDate: 2018-07-22T20:52:44.000Z } ]nextRelease
Type:Object
Information related to the newly published release:
version
String
The version of the new release.
gitHead
String
The sha of the last commit being part of the new release.
notes
String
The release notes for the new release.
channel
String
The distribution channel on which the next release will be made available (undefined for the default distribution channel).
Example:
{ type: 'minor', gitHead: '68eb2c4d778050b0701136ca129f837d7ed494d2', version: '1.1.0', gitTag: 'v1.1.0', notes: 'Release notes for version 1.1.0...', channel : 'next'}releases
Type:Array<Object>
The list of releases published or made available to a distribution channel.Each release object has the following properties:
name
String
Optional. The release name, only if set by the correspondingpublish plugin.
url
String
Optional. The release URL, only if set by the correspondingpublish plugin.
version
String
The version of the release.
gitHead
String
The sha of the last commit being part of the release.
notes
String
The release notes for the release.
pluginName
String
The name of the plugin that published the release.
channel
String
The distribution channel on which the release is available (undefined for the default distribution channel).
Example:
[ { name: 'GitHub release', url: 'https://github.com/me/my-package/releases/tag/v1.1.0', type: 'minor', gitHead: '68eb2c4d778050b0701136ca129f837d7ed494d2', version: '1.1.0', gitTag: 'v1.1.0', notes: 'Release notes for version 1.1.0...', pluginName: '@semantic-release/github' channel: 'next' }, { name: 'npm package (@latest dist-tag)', url: 'https://www.npmjs.com/package/my-package', type: 'minor', gitHead: '68eb2c4d778050b0701136ca129f837d7ed494d2', version: '1.1.0', gitTag: 'v1.1.0', notes: 'Release notes for version 1.1.0...', pluginName: '@semantic-release/npm' channel: 'next' } ]Last updated