Vue CLI 3.x 与 2.x的区别
主要区别
安装&项目构建
CLI安装
1 2 3 4 5 6
| npm install -g vue-cli
npm install -g @vue/cli
|
项目构建
cli2.x
1 2 3
| vue init <template-name> <project-name> npm i npm run dev
|
cli3.x
- 安装新增TypeScript配置选项
- 新增图形化安装方法
- 保留了2.x之前的安装方法
1 2 3 4 5 6 7 8 9
| vue create hello-world npm i npm run serve
vue ui
npm install -g @vue/cli-init
vue init webpack projectname
|
3.x后目录结构变化[替换2.x功能的新特性]
config目录删除,使用模式的.env文件代替[模式]
cli3
新增模式概念,每个模式在项目中都有对应的配置文件,项目启动时,对应的文件就会加载,与环境变量不同,一个模式可以包括多个环境变量
Vue CLI
项目默认有三个模式:
development
模式用于 vue-cli-service serve
production
模式用于 vue-cli-service build
和 vue-cli-service test:e2e
test
模式用于 vue-cli-service test:unit
模式需要在启动项目时使用–mode指定
1
| NODE_ENV=development npm run serve --mode mymode # 模式包含多个环境变量
|
- 每个模式有多个环境变量,
cli3.x
为模式与环境变量指定了一个.env
配置文件
1 2 3
| .env .env.mode .env.mode.development
|
.env
文件详细信息
- 这些文件是用来代替
config
目录的
- 以
VUE_APP_
开头的变量可以再代码中通过process.env
访问,其他的变量不可访问
process.env
始终含有两个特殊变量NODE_ENV
和BASE_URL
删除static目录[新增public目录]
删除了static
目录,它的静态资源转移到public
目录中,通过/xx.xx
可以直接访问
public
详细信息
cli3.x
项目配置的不同(build
目录删除)
2.x
版本的项目配置是在config
和build
中完成,但是,到了3.x
版本,这两个目录都被删除,如果需要自定义配置,需要自己新建vue.config.js
文件
publicPath
- 部署应用包时的基本URL,即
webpack
的output.publicPath
- 但,
vue
项目中其他地方会用到publicPath
,所以不要修改webpack
的output.publicPath
outputDir
build
构建的文件存放的目录
- 即
output.path
,但只能修改outputDir
,不能修改output.path
assetsDir
编译后,在outputDir
目录中存放静态资源的目录
lintOnSave
配置eslint
后,是否每次保存lint
代码,默认启动
runtimeCompiler
是否使用包含运行时编译器的 Vue
构建版本,默认不启动
configureWebpack
& chainWebpack
- 这两个选项是用来配置
webpack
内容的,前者是合并对象,后者是链式调用
[cli3.6]webpack
的build
代码压缩默认不开启,需要设置环境变量为production
才会开启
devServer
支持所有webpack-dev-server
选项
- 配置项目端口、域名
host、port、https
- 配置项目跨域代理
proxy
1 2 3 4 5 6
| module.exports = { port: 8100, devServer: { proxy: 'http://localhost:4000' } }
|
新增功能特性
快速原型开发
在cli3.x
中可以使用vue serve
和vue build
命令对单个*.vue
文件进行快速原型开发
安装全局依赖
1
| npm install -g @vue/cli-service-global
|
vue serve
运行文件
1 2 3 4 5 6 7
| vue serve myComponent.vue Usage: serve [options] [entry] 在开发环境模式下零配置为 .js 或 .vue 文件启动一个服务器 Options: -o, --open 打开浏览器 -c, --copy 将本地 URL 复制到剪切板 -h, --help 输出用法信息
|
vue build
编译文件
1 2 3 4 5 6 7 8
| vue build myComponent.vue Usage: build [options] [entry] 在生产环境模式下零配置构建一个 .js 或 .vue 文件 Options: -t, --target <target> 构建目标 (app | lib | wc | wc-async, 默认值:app) -n, --name <name> 库的名字或 Web Components 组件的名字 (默认值:入口文件名) -d, --dest <dir> 输出目录 (默认值:dist) -h, --help 输出用法信息
|
图形化界面
vue cli3
新增一个UI图形化管理页面,可以通过它新建项目、管理原有项目的插件
创建新项目
管理原有项目(包括2.X项目)
- 插件管理(更新,查看)(3.x)
- 依赖(module)管理(删除、安装、更新、查看)(2.x、3.x)
- 项目配置修改 (3.x)
- 项目任务(项目script命令启动、停止操作)(2.x、3.x)
cli
插件
什么是插件
vue cli3.x
使用了一套基于插件的架构,cli的相关依赖都是以@vue/cli-plugin-
开头的
- 插件可以修改内部的
webpack
配置,也可以向 vue-cli-service
注入命令
- 在项目创建的过程中列出的特性,绝大部分都是通过插件来实现的
vue add
插件的安装
cli3.x
项目提供了vue add
命令来安装插件
1
| vue add @vue/cli-plugin-eslint
|
特殊的vue-router
和vuex
它们没有对应的插件,但是依旧可以使用vue add
在项目中添加它们
1 2
| vue add router vue add vuex
|
配置文件样例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| const path = require('path') function resolve (dir) { return path.join(__dirname, dir) } module.exports = { publicPath: '/', assetsDir: 'static', productionSourceMap: false, configureWebpack: config => { if (process.env.VUE_APP_NODE_ENV === 'production') { } else { } }, chainWebpack: config => { config.resolve.alias .set('@img', resolve('src/assets/img')) .set('@c', resolve('src/components')) .set('@m', resolve('src/mixins')) .set('@v', resolve('src/views')) .set('@s', resolve('src/store')) }, css: { modules: false, extract: true, sourceMap: false, loaderOptions: { css: { }, postcss: { } } }, devServer: { port: 8010 } }
|
参考