WIP: this is the work in progress branch of the upcoming vue-cli 3.0. Only for preview for template maintainers.
This project uses a monorepo setup that requires using Yarn because it relies on Yarn workspaces.
# install dependencies
yarn
# link `vue` executable
cd packages/@vue/cli
yarn link
# create test projects in /packages/test
cd -
cd packages/test
vue create test-app
cd test-app
yarn
yarn dev
There are two major parts of the system:
@vue/cli
: globally installed, exposes thevue create <app>
command;@vue/cli-service
: locally installed, exposes thevue-cli-service
commands.
Both utilize a plugin-based architecture.
Creator is the class created when invoking vue create <app>
. Responsible for prompting for preferences, generating the project files and installing dependencies.
Generators are globally-installed plugins for the Creator. @vue/cli
ships with a number of built-in generators.
A generator should export a function which receives a GeneratorAPI instance as the only argument. The API allows a generator to inject prompts, package.json
fields and files to the project being created.
Service is the class created when invoking vue-cli-service <command> [...args]
. Responsible for managing the internal webpack configuration, and exposes commands for serving and building the project.
Plugins are locally installed into the project as devDependencies. @vue/cli-service
ships with a number of built-in plugins.
A plugin should export a function which receives two arguments:
- A PluginAPI instance
- Project local options specified in
vue.config.js
The API allows plugins to extend/modify the internal webpack config for different environments and inject additional commands to vue-cli-service
.