Document the `addChannel` step defined in
e35e5bb73f/lib/definitions/plugins.js (L83-L84),
which is used in @semantic-release/npm.
		
	
			
		
			
				
	
	
	
		
			5.9 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	Plugins
Each release step is implemented by configurable plugins. This allows for support of different commit message formats, release note generators and publishing platforms.
A plugin is a npm module that can implement one or more of the following steps:
| Step | Required | Description | 
|---|---|---|
| verifyConditions | No | Responsible for verifying conditions necessary to proceed with the release: configuration is correct, authentication token are valid, etc... | 
| analyzeCommits | Yes | Responsible for determining the type of the next release ( major,minororpatch). If multiple plugins with aanalyzeCommitsstep are defined, the release type will be the highest one among plugins output. | 
| verifyRelease | No | Responsible for verifying the parameters (version, type, dist-tag etc...) of the release that is about to be published. | 
| generateNotes | No | Responsible for generating the content of the release note. If multiple plugins with a generateNotesstep are defined, the release notes will be the result of the concatenation of each plugin output. | 
| prepare | No | Responsible for preparing the release, for example creating or updating files such as package.json,CHANGELOG.md, documentation or compiled assets and pushing a commit. | 
| publish | No | Responsible for publishing the release. | 
| addChannel | No | Responsible for adding a release channel (e.g. adding an npm dist-tag to a release). | 
| success | No | Responsible for notifying of a new release. | 
| fail | No | Responsible for notifying of a failed release. | 
Note: If no plugin with a analyzeCommits step is defined @semantic-release/commit-analyzer will be used.
Plugins installation
Default plugins
These four plugins are already part of semantic-release and are listed in order of execution. They do not have to be installed separately:
"@semantic-release/commit-analyzer"
"@semantic-release/release-notes-generator"
"@semantic-release/npm"
"@semantic-release/github"
Additional plugins
Additional plugins have to be installed via npm:
$ npm install @semantic-release/git @semantic-release/changelog -D
Plugins declaration and execution order
Each plugin must be configured with the plugins options by specifying the list of plugins by npm module name.
{
  "plugins": ["@semantic-release/commit-analyzer", "@semantic-release/release-notes-generator", "@semantic-release/npm"]
}
Note: If the plugins option is defined, it overrides the default plugin list, rather than merging with it.
For each release step the plugins that implement that step will be executed in the order in which they are defined.
{
  "plugins": [
    "@semantic-release/commit-analyzer",
    "@semantic-release/release-notes-generator",
    "@semantic-release/npm",
    "@semantic-release/git"
  ]
}
With this configuration semantic-release will:
- execute the verifyConditionsimplementation of@semantic-release/npmthen@semantic-release/git
- execute the analyzeCommitsimplementation of@semantic-release/commit-analyzer
- execute the generateNotesimplementation of@semantic-release/release-notes-generator
- execute the prepareimplementation of@semantic-release/npmthen@semantic-release/git
- execute the publishimplementation of@semantic-release/npm
Plugin options configuration
A plugin configuration can be specified by wrapping the name and an options object in an array. Options configured this way will be passed only to that specific plugin.
Global plugin configuration can be defined at the root of the semantic-release configuration object. Options configured this way will be passed to all plugins.
{
  "plugins": [
    "@semantic-release/commit-analyzer",
    "@semantic-release/release-notes-generator",
    ["@semantic-release/github", {
      "assets": ["dist/**"]
      }],
    "@semantic-release/git"
  ],
  "preset": "angular"
}
With this configuration:
- All plugins will receive the presetoption, which will be used by both@semantic-release/commit-analyzerand@semantic-release/release-notes-generator(and ignored by@semantic-release/githuband@semantic-release/git)
- The @semantic-release/githubplugin will receive theassetsoptions (@semantic-release/gitwill not receive it and therefore will use it's default value for that option)