semantic-release plugin to automatically update contributors list based on commits history
Step | Description |
---|---|
prepare |
Determine the contributors list by analyzing commits history. |
npm install semantic-release-contributors -D
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)
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
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. | . |