📦🤖 semantic-release-contributors
semantic-release plugin to automatically update contributors list based on commits history
Step | Description |
---|---|
prepare |
Determine the contributors list by analyzing commits history. |
Install
npm install semantic-release-contributors -D
How does it work
Whenener someone commit to the project, his/her name will be appended to the contributors list of your package.json file.
If Paul Smith
commits to a project with the following set-up:
{ "name": "your-project", "author": "Barney Rubble <b@rubble.com>", "contributors": [ "John Doe <j@doe.com> (https://johndoe.com)" ]}
The package.json
file would then be updated to:
{ "name": "your-project", "author": "Barney Rubble <b@rubble.com>", "contributors": [ "John Doe <j@doe.com> (https://johndoe.com)", "Paul Smith <p.smith@domain.tld>" ]}
NOTE: this package internally deserialize the contributors to objects (name, email, url) and make sure duplicated emails are removed. Contributors objects are then potentially re-serialized before being written to the package file (unless you opt for a different format)
Usage
The plugin can be configured in the semantic-release configuration file:
IMPORTANT: since this plugin acts on semantic-release's "prepare" step and do not commit the updated package.json file itself, it requires to be placed before "@semantic-release/git".
{ "plugins": [ // important: insert it before @semantic-release/git ["semantic-release-contributors", { "format": "string", "pkgRoot": "." }], // ... "@semantic-release/git" // ... ]}
With this example:
- the contributors will be stringified to
name <email>
- the package file containing the contributors will be read then updated in the current directory
Configuration
Options
Option | Description | Default |
---|---|---|
format |
string or object . It defines which format will the contributors be written with to the package.json file. |
string |
pkgRoot |
Directory path to publish. | . |
Similar or related projects