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"
```
* fix: should infer package manager from config if there's no lockfile in the project
* fixup! fix: should infer package manager from config if there's no lockfile in the project
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
* feat: lock minor versions when creating projects / adding plugins
closes#5012
* refactor: also calculate latestMinor version
* feat: support add packages with tilde version range
* refactor: make the `runCommand` invocations more concise
* refactor: use the `getVersions` utility function to get latestMinor
* feat: when adding plugins, use tilde range by default
* fix: allow empty args
* 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
* feat: support binary mirrors for taobao registry
fixes issues like #4718
* fix: only install cypress 3, for now
* fix: do not override user defined `CYPRESS_INSTALL_BINARY` env
* fix: add pnpm v4 support
in pnpm v4 the option '--loglevel' is no longer available instead '--reporter' is used.
* refactor: remove 'v' from PNPM constants for linting
* refactor: rename variable
* fix: typo in _hasPnpm4orLater
Co-Authored-By: Pavan Kumar Sunkara <pavan.sss1991@gmail.com>
* refactor: reduce the amount of duplicate code for pnpm version check
* refactor: remove return-assignment
* refactor: add explicit return value instead of using array access
Co-Authored-By: Pavan Kumar Sunkara <pavan.sss1991@gmail.com>
* fix: remove return value from checkPnpmVersion
* fix: pnpmVersion variable
* refactor: cache pnpm version number
* refactor: fix function name and revert api break
* fix: function call correction
* refactor: export hasPnpmVersionOrLater and use this in favor of hasPnpm4OrLater
* refactor: move cache getter into getPnpmVersion
* refactor: add comment
* refactor: remove comment
It has become a common source of mistakes.
For example, during PR #4363 I've referred to the wrong `options`
several times due to the variable shadowing.
* refactor: move router to its own plugin
* refactor: rename routerHistoryMode option to historyMode
* test: add @vue/cli-plugin-router tests
* feat: change src/router.js for most common use cases
* fix: fix cli-ui tests
* docs: Remove router root option from docs
* fix: add support for legacy router option
The root cause here is the same as #4095
The failing `loadModule` call will return `undefined` for a js config
read operation, which later caused config being overwritten.
BREAKING CHANGE:
Preset generated before v3.4.0 may contain a `"cssPreprocessor": "sass"`
field. It now means dart-sass rather than node-sass.
`rootOptions.cssPreprocessor === 'sass'` now also means dart sass.
May affect those generator plugins who depends on this field