📦🤖 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