- 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 33.8k
Description
What problem does this feature solve?
Hi Vue-Dev-Team,
I beleave, One of the most painfull things in the NPM dependency hell is to update packages of an existing project. Here is a code snippet of a package.json of a typical Vue project from us:
{
"dependencies": {
    "axios": "^0.19.0",
    "vue": "^2.6.10",
    "vue-i18n": "^8.15.0"
  },
  "devDependencies": {
    "@kazupon/vue-i18n-loader": "^0.3.0",
    "@vue/cli-plugin-babel": "^3.12.1",
    "@vue/cli-plugin-e2e-nightwatch": "^3.12.1",
    "@vue/cli-plugin-eslint": "^3.12.1",
    "@vue/cli-plugin-unit-jest": "^4.0.5",
    "@vue/cli-service": "^3.12.1",
    "@vue/eslint-config-standard": "^3.0.5",
    "@vue/test-utils": "^1.0.0-beta.29",
    "babel-core": "7.0.0-bridge.0",
    "babel-jest": "^23.6.0",
    "ecom-backoffice-styles": "^3.1.1",
    "full-icu": "^1.3.0",
    "node-sass": "^4.13.0",
    "sass-loader": "^7.3.1",
    "vue-cli-plugin-i18n": "^0.5.2",
    "vue-template-compiler": "^2.6.10"
  }
}
The greatest problem is to update all dependencies for the Vue project or all Dev-Server Dependencies etc... Unfortunatelly there is no CLI method to update all dependencies of the Vue project.
Our workflows currently:
1. Manually update of patch and minor versions
- The only thing we can do "save" without big problems is to use "yarn upgrade" to update all "patch" and "minor" versions. After yarn upgrade we have to do a manual process where we search all updated version numbers inside the yarn.lock and set/update all related dependencies/devDependencies inside the package.json.
2. Create a new Vue project per CLI
The second way to update a project is to create a new Vue project per VUE-CLI. So we have a new project with maybe other dependency or folder structures etc where we try to do a manually copy of our source files into the new project.
Now a big effort will be to test the new project and all unit or e2e tests etc .... That all to update versions of all related dependencies... :/
My tip or idee would be like the total.js lib
- Just ONE dependency for dependencies or devDependencies.
Instead of the dependencies like our current project examples like this ....
{
  "dependencies": {
    "vue": "^2.6.10",
    ...
  },
  "devDependencies": {
    "@kazupon/vue-i18n-loader": "^0.3.0",
    "@vue/cli-plugin-babel": "^3.12.1",
    "@vue/cli-plugin-e2e-nightwatch": "^3.12.1",
    "@vue/cli-plugin-eslint": "^3.12.1",
    "@vue/cli-plugin-unit-jest": "^4.0.5",
    "@vue/cli-service": "^3.12.1",
    "@vue/eslint-config-standard": "^3.0.5",
    "@vue/test-utils": "^1.0.0-beta.29",
    "babel-core": "7.0.0-bridge.0",
    "babel-jest": "^23.6.0",
    "vue-cli-plugin-i18n": "^0.5.2",
    "vue-template-compiler": "^2.6.10",
    ...
  }
}
...... the dependencies of a Vue-Project should be look like this:
{
  "dependencies": {
    "vue": "^2.6.10",
    ...
  },
  "devDependencies": {
    "@vue/dev": "^2.6.10",
    ...
  }
}
In example of total.js you can see that only ONE dependency is needed for any total.js projects.
I think this could be a very improvement for all developers and also the effort to update a project can be minimized.
Best regards,
Mario
PS: I LOVE VUE.js :)
What does the proposed API look like?
{
  "dependencies": {
    "vue": "^2.6.10",
    ...
  },
  "devDependencies": {
    "@vue/dev": "^2.6.10",
    ...
  }
}