Currently, if we use `api.extendPackage({foo: null}, {prune: true})` the dependency is removed but a warning is logged as the range is invalid:
```
WARN invalid version range for dependency "foo":
- null injected by generator "my-plugin"
```
Currently, 3 options are implemented:
- options.prune (defaults to `false`) - Remove null or undefined
fields from the object after merging.
- options.merge (defaults to `true`) deep-merge nested fields, note
that dependency fields are always deep merged regardless of this option.
- options.warnIncompatibleVersions (defaults to `true`) Output warning
if two dependency version ranges don't intersect.
Closes#4779
* refactor(migrator): rename `installed` to `baseVersion`
* feat: `vue upgrade --from` option and a new `vue migrate` command
* fix: fix support for `vuePlugins.resolveFrom` option
* chore: add a fixme comment
* fix: use loadModule instead of manually calculating the package.json path
This also fixes support for monorepo.
(TODO: tests)
* fix: treat `resolveFrom` as `context`, fixing edge cases
* fix: use read-pkg instead of loadModule, avoid messing up require cache
* fix: getInstalledVersion still requires `loadModule` to support monorepo
* refactor: extract deps & config logic to separate files
* feat: implement a migrator to upgrade to eslint 6
* fix: add required deps for eslint v4
* test: move migrator tests to each standalone plugins
* refactor: use spread operator instead of Object.assign
* feat: scaffold projects with eslint 6
* style: eslint fix
* refactor: do not use hard-coded ecmaVersion, use babel-eslint for now
* fix: upgrade to @vue/eslint-config-standard
* style: continue fix lint errors
* chore: upgrade to eslint-plugin-vue@^6.1.2
* refactor: use `ecmaVersion: 2020` for dynamic import syntax support
* test: fix baseESLintConfig
* chore: also update yarn.lock to fix CI caches
* chore: update lockfile again, fix babel regressions
* test: nightwatch tests should fail if lint errors occur
* chore: update the lockfile (again), fixing a bug in airbnb config
* feat(generator): allow plugins to modify how configs are extracted
* refactor(cli): change addConfigTransform parameters
Allow plugin author to set config 'descriptions' instead of implementing their own transform functions.
* fix(cli): fix missed issues from changing types from array to set
* fix: use reserved config transforms to check in API
* fix: lines dedupe
* feat(cli): When selecting "separate config files",
cli should create .browserslistrc file
close#1236
* test(cli): add test for extracting .browserslistrc