This is a thin wrapper around the @semantic-release/npm plugin for Semantic Release that allows it to be called multiple times, which can be useful if you need to publish to multiple NPM registries simultaneously.
yarn add --dev @amanda-mitchell/semantic-release-npm-multiple
The plugin can be configured in the semantic-release configuration file:
{
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
[
"@amanda-mitchell/semantic-release-npm-multiple",
{
"registries": {
"registryName1": {
"npmPublish": true
},
"registryName2": {
"npmPublish": true
}
}
}
]
]
}Each of the keys in registries refers to a specific registry that should be used and may be any value that is meaningful to you.
The object associated with that key is a set of options that should be passed to the @semantic-release/npm plugin when calling it.
@amanda-mitchell/semantic-release-npm-multiple also looks at a number of environment variables for its configuration:
NPM_TOKENNPM_USERNAMENPM_PASSWORDNPM_EMAILNPM_CONFIG_REGISTRYNPM_CONFIG_USERCONFIG
For any of these variables, if you define a {UPPER_CASE_REGISTRY_NAME}_{VARIABLE} environment variable, it will be used instead.
For example, if you wanted to publish a package to both a GitHub private registry and the public NPM registry, you would first create a configuration file like this:
{
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
[
"@amanda-mitchell/semantic-release-npm-multiple",
{
"registries": {
"github": {},
"public": {}
}
}
]
]
}And then, when running semantic-release, set these environment variables:
GITHUB_NPM_CONFIG_REGISTRY=https://npm.pkg.github.com/GITHUB_NPM_TOKEN=XXXXXPUBLIC_NPM_CONFIG_REGISTRY=https://registry.npmjs.orgPUBLIC_NPM_TOKEN=XXXXX