A set of semantic-release scripts that allow publishing of prerelease versions behind dist-tags.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin
.eslintrc
.gitignore
.travis.yml
README.md
analyzeCommits.js
generateNotes.js
getLastRelease.js
lastTag.js
package.json
validateConfig.js
verifyConditions.js
verifyRelease.js

README.md

semantic-prerelease

A set of scripts for semantic-release that allow publishing of prerelease versions from branches.

This projects allows you to push prerelease package versions to NPM, hidden behind a dist-tag, and trigger deployments by fast-forwarding a release branch.

Prerequisites

  • semantic-release 4.x+
  • git 2.13+ (used for tag parsing)

This project has been tested in Travis-CI and Jenkins builds.

Usage

  1. Install the node module through the following command:

    npm install --save-dev @telerik/semantic-prerelease
    
  2. Describe the branches that will publish prerelease versions. In this example, commits in the develop branch pushes prerelease versions to the dev dist-tag. Use fallbackTags to bootstrap the versions.

     // package.json
     "release": {
       "branchTags": {
         "develop": "dev"
       },
       "fallbackTags": {
         "dev": "latest"
       }
     }
    
  3. Configure semantic-release to use the included plug-ins:

     // package.json
     "release": {
       "analyzeCommits": "@telerik/semantic-prerelease/analyzeCommits",
       "generateNotes": "@telerik/semantic-prerelease/generateNotes",
       "getLastRelease": "@telerik/semantic-prerelease/getLastRelease",
       "verifyConditions": "@telerik/semantic-prerelease/verifyConditions",
       "verifyRelease": "@telerik/semantic-prerelease/verifyRelease"
     }
    
  4. Use semantic-prerelease publish instead of npm publish in the end of your build. This publishes the prerelease versions behind dist-tags.

  5. (Optionally) Publish scoped packages as public by using semantic-prerelease publish --public

With the above setup, new official releases (bearing the latest dist-tag) can be published from master by fast-forwarding it to develop:

git checkout master && git merge --ff-only develop && git push

Your first official release will be published with version 0.1.0 to enable automatic releases during initial development. You must mark a commit as a major release to bump the major version to 1. This is different than vanilla semantic-release where your first release is 1.0.0