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