├── .gitignore ├── .npmignore ├── .travis.yml ├── README.md ├── index.js ├── package.json └── test └── integration └── index-test.js /.gitignore: -------------------------------------------------------------------------------- 1 | # common 2 | coverage 3 | node_modules 4 | *.log 5 | .DS_Store 6 | .nyc_output 7 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # common 2 | coverage 3 | node_modules 4 | *.log 5 | .DS_Store 6 | .nyc_output 7 | 8 | # source/config 9 | test 10 | *.yml 11 | .gitignore 12 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: node_js 3 | cache: 4 | directories: 5 | - $HOME/.npm 6 | notifications: 7 | email: false 8 | node_js: 9 | - 8 # stable 10 | - 6 # LTS 11 | - 4 # maintenance 12 | after_success: 13 | - npm run coverage:upload 14 | - npm run semantic-release 15 | branches: 16 | except: 17 | - /^v\d+\.\d+\.\d+$/ 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ⛔ This repository has been archived 2 | 3 | See [semantic-release/release-notes-generator](https://github.com/semantic-release/release-notes-generator/) instead. 4 | 5 | --- 6 | 7 | # release-notes-generator 8 | 9 | > 🔩📖 generates release notes from commits 10 | 11 | [![npm version](https://badge.fury.io/js/%40semantic-release%2Frelease-notes-generator.svg)](http://badge.fury.io/js/%40semantic-release%2Frelease-notes-generator) 12 | [![Build Status](https://travis-ci.org/semantic-release/release-notes-generator.svg?branch=master)](https://travis-ci.org/semantic-release/release-notes-generator) 13 | [![Coverage Status](https://coveralls.io/repos/semantic-release/release-notes-generator/badge.svg)](https://coveralls.io/r/semantic-release/release-notes-generator) 14 | [![Greenkeeper badge](https://badges.greenkeeper.io/semantic-release/release-notes-generator.svg)](https://greenkeeper.io/) 15 | 16 | 17 | ## Usage 18 | 19 | ```js 20 | const releaseNotes = require("@semantic-release/release-notes-generator") 21 | 22 | releaseNotes({}, (error, changelogs) { 23 | 24 | }) 25 | ``` 26 | 27 | ## How it works 28 | 29 | `release-notes-generator` is using [conventional-changelog](https://www.npmjs.com/package/conventional-changelog) with the Angular preset to parse commit messages and the `package.json` file in order to calculate the changelogs for a new release. 30 | 31 | ## License 32 | 33 | MIT 34 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const conventionalChangelog = require('conventional-changelog') 4 | 5 | // pluginConfig are passed to all semantic-release plugins but are not used 6 | // optios have been used in an earlier version but are currently not used. 7 | // We leave them in as we expect to need them again in future and try to 8 | // avoid breaking changes 9 | module.exports = function (pluginConfig, options, callback) { 10 | if (typeof options === 'function') { 11 | callback = options 12 | } 13 | 14 | let content = '' 15 | conventionalChangelog({ 16 | preset: 'angular' 17 | }) 18 | .on('error', callback) 19 | .on('data', (buffer) => { 20 | content += buffer.toString() 21 | }) 22 | .on('end', () => { 23 | callback(null, content.trim()) 24 | }) 25 | } 26 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.0.0-development", 3 | "name": "@semantic-release/release-notes-generator", 4 | "description": "generates the release notes/changelog", 5 | "authors": [ 6 | "Stephan Bönnemann (http://boennemann.me)", 7 | "Gregor Martynus (https://twitter.com/gr2m)" 8 | ], 9 | "bugs": { 10 | "url": "https://github.com/semantic-release/release-notes-generator/issues" 11 | }, 12 | "dependencies": { 13 | "conventional-changelog": "1.1.4", 14 | "github-url-from-git": "^1.4.0" 15 | }, 16 | "devDependencies": { 17 | "coveralls": "^2.11.2", 18 | "mkdirp": "^0.5.1", 19 | "proxyquire": "^1.5.0", 20 | "rimraf": "^2.4.0", 21 | "standard": "^10.0.3", 22 | "tap": "^10.7.1", 23 | "semantic-release": "^7.0.1" 24 | }, 25 | "homepage": "https://github.com/semantic-release/release-notes-generator#readme", 26 | "keywords": [ 27 | "semantic-release", 28 | "author", 29 | "automation", 30 | "changelog", 31 | "module", 32 | "package", 33 | "publish", 34 | "release", 35 | "semver", 36 | "version" 37 | ], 38 | "license": "MIT", 39 | "repository": { 40 | "type": "git", 41 | "url": "https://github.com/semantic-release/release-notes-generator.git" 42 | }, 43 | "publishConfig": { 44 | "access": "public" 45 | }, 46 | "scripts": { 47 | "coverage": "tap --coverage-report=lcov", 48 | "coverage:upload": "tap --coverage-report=text-lcov | coveralls", 49 | "pretest": "standard", 50 | "test": "tap --100 --jobs-auto './test/{integration,unit}/**/*-test.js'", 51 | "semantic-release": "semantic-release pre && npm publish && semantic-release post" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /test/integration/index-test.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const test = require('tap').test 4 | 5 | const generateNotes = require('../..') 6 | 7 | test('smoket test', (t) => { 8 | generateNotes({}, function (error, log) { 9 | t.error(error) 10 | t.ok(/<\/a>/.test(log), 'adds anchor link') 11 | t.end() 12 | }) 13 | }) 14 | 15 | test('accepts additioal options argument', (t) => { 16 | generateNotes({}, {}, function (error, log) { 17 | t.error(error) 18 | t.end() 19 | }) 20 | }) 21 | --------------------------------------------------------------------------------