I've used Vue for some time now, but I'm just getting started with the CLI and I got a bit confused.
I installed @vue/cli and if I type vue in the command line, I get:
Usage: vue <command> [options]
Options:
  -V, --version                              output the version number
  -h, --help                                 output usage information
Commands:
  create [options] <app-name>                create a new project powered by vue-cli-service
  add [options] <plugin> [pluginOptions]     install a plugin and invoke its generator in an already created project
  invoke [options] <plugin> [pluginOptions]  invoke the generator of a plugin in an already created project
  inspect [options] [paths...]               inspect the webpack config in a project with vue-cli-service
  serve [options] [entry]                    serve a .js or .vue file in development mode with zero config
  build [options] [entry]                    build a .js or .vue file in production mode with zero config
  ui [options]                               start and open the vue-cli ui
  init [options] <template> <app-name>       generate a project from a remote template (legacy API, requires @vue/cli-init)
  config [options] [value]                   inspect and modify the config
  upgrade [semverLevel]                      upgrade vue cli service / plugins (default semverLevel: minor)
  info                                       print debugging information about your environment
  Run vue <command> --help for detailed usage of given command.
I created a project with vue and I needed to install @vue/cli-service-global for some reason that I can't remember.
After that, however, I noticed:
'vue-cli-service' is not recognized as an internal or external command
And that's because I had to install @vue/cli-service. Now, when I type vue-cli-service in the command line, I get:
  Usage: vue-cli-service <command> [options]
  Commands:
    serve     start development server
    build     build for production
    inspect   inspect internal webpack config
  run vue-cli-service help [command] for usage of a specific command.
Apparently, I can build, serve, and inspect with both CLI tools. My question is - what's the difference between them? Both the readme of @vue/cli and @vue/cli-service have nothing but a link to this page where no answer is given to that question.
What can I do with one that I can't do with the other? Do I need both?
The CLI ( @vue/cli ) is a globally installed npm package and provides the vue command in your terminal. It provides the ability to quickly scaffold a new project via vue create . You can also manage your projects using a graphical user interface via vue ui .
Vue will be available on the window object for you to access globally. All external JavaScript must be included like this one way or another, even if you use vue-cli . vue-cli is just a tool which generates Vue projects from templates.
3 (2022-03-15)
The vue-cli-service serve command starts a dev server (based on webpack-dev-server) that comes with Hot-Module-Replacement (HMR) working out of the box.
@vue/cli-service-global is a package that allows you to run vue serve and vue build without any local dependencies.
@vue/cli-service is a package that actually doing those vue serve and vue build, both @vue/cli-service-global and @vue/cli depend on it.
If you're using @vue/cli then you don't need to install another two independently, since it already has @vue/cli-service in its dependencies.
Added: Just to be sure, I'll explain it more:
@vue/cli:
add, create, config, ui and other commandsbuild and serve commands through @vue/cli-service-global packageinspect command through @vue/cli-service package (local dependency)@vue/cli-service-global:
build, inspect and serve commands through @vue/cli-service package@vue/cli-service:
build, inspect and serve commandsSo, you need to install @vue/cli only and remove other two.
Added: Clarification about using vue-cli-service: When you create a project using vue create command, @vue/cli makes a link to vue-cli-service binary inside ./node_modules/.bin of created project.
Then you can use it like this:
Access it directly as vue-cli-service inside npm scripts (package.json): 
"scripts": {   "watch": "vue-cli-service build --watch" }  ./node_modules/.bin/vue-cli-service build --watch. You can even add ./node_modules/.bin to you shell PATH and access it from the shell directly as vue-cli-service.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With