You can now map dist-tags onto "fallbackTags". E.g. if you want a
development channel like "next" and no version is currently published as "next"
semantic-release will fallback to "latest" to determine the new "next" version.
This is now the default for "next" -> "latest", but you can specify your own
mappings by adding "fallbackTags" to your `package.json`'s "release" field.
BREAKING CHANGE: In cases where you pushed a new commit with a "dist-tag"
configuration of "next" and no version was previously published as "next",
semanitc-release failed and did not publish a new version. It will now
automatically fall back to to "latest".
With this new feature you can pass an array of plugin locations/names to
both "verifyConditions" and "verifyRelease" in your `package.json`'s "release"
field. This will run multiple verification plugins in series.
Removes dependency bundling, because it's broken for scoped modules with npm
right now. Keeps npm from logging four ugly warnings upon install.
Can be reverted once https://github.com/npm/npm/issues/9175 is closed.
This commit does a lot but it's all connected and tries to make everything more extensible and future proof.
1. CLI arguments and options from the "package.json" are no longer treated as two different things. You can now pass options either way.
BREAKING CHANGE: cli arguments are now normalized to camelCase, so e.g. `options['github-url']` is now `options.githubUrl`
2. Plugins no longer receive config they need one by one, but in one huge object. This way it's easier to pass more info in the future w/o breaking existing plugins that rely on the position of the callback in the arguments array.
BREAKING CHANGE: Plugins now need to read their passed options from one huge config object.
Old:
```js
module.exports = function (pluginConfig, foo, bar, cb) {…}
```
New:
```js
// ES5
module.exports = function(pluginConfig, config, cb) {
var foo = config.foo
var bar = config.bar
…
}
// ES6
module.exports = function (pluginConfig, {foo, bar}, cb) {…}
```