Vue CLi3入门

地址

Vue CLi3 github
Vue CLi web

安装

命名方式已经改为npm推荐的作用域规则,详情查看此文章

npm i @vue/cli -g
yarn add @vue/cli global
# 查看版本
vue -V

创建一个项目

vue create clidemoe  # 2.0中 vue init webpack clidemoe

如果版本小于3.0会提示让你升级3.0以上。

第一次创建只会有两个选项(default和Manually select features),1和2是我之前创建保存的。
这里我们主要看Manually select features:

首先是特性选择(按空格键选中或取消,a全选,i反选):

接着是选择路由是否使用history模式:
Use history mode for router? (Requires proper server setup for index fallback in production) (Y/n)

接着选择使用哪种css预处理器:

最后选择代码风格等:

最后会问你是否保存本次选择的配置:

接着又会问你特性的存放方式:

最后会问你是否保存本次预设

最后出现这两行就说明创建完成了:

创建方式2:

使用图形化vue ui创建项目:
  1. 选择包管理器
  2. 选择配置,可以选择默认,也可以自己手动配置(一般手动配置),还可以选择之前配置过的(前提是有保存)
  3. 选择功能(插件)
  4. 选择配置
  5. 如果勾选了保存预设,会有弹框让你输入这次保存的预设名
    创建好了,看看页面

    插件

    依赖

默认启动服务方式:

npm run serve  # 2.0中 npm run dev
npx vue-cli-service serve

对比:
CLi2启动方式是webpack-dev-server --inline --progress --config build/webpack.dev.conf.js,使用的是webpack-dev-server搭的服务
CLi3启动方式是vue-cli-service serve
vue-cli-service serve就是CLi服务,文件位于node_modules@vue\cli-service\bin

目录结构
cli2

cli3

相较于2.0,3.0的目录结构简单了许多,少了build、config两个目录,安装时自动下载了node_modules,3.0的webpack配置可以在根目录新建一个vue.config.js文件。
Vue CLi3.0删除了config和build文件夹,现在配置webpack只需要在项目的根目录下新建vue.config.js文件

#vue.config.js 完整默认配置
module.exports = {
     // 基本路径
     baseUrl: '/',
     // 输出文件目录
     outputDir: 'dist',
     // 用于嵌套生成的静态资产(js,css,img,fonts)的目录。
     assetsDir: '',
     // 以多页模式构建应用程序。
     pages: undefined,
     // eslint-loader 是否在保存的时候检查
     lintOnSave: true,
     // 是否使用包含运行时编译器的Vue核心的构建。
     runtimeCompiler: false,
     // 默认情况下babel-loader忽略其中的所有文件node_modules。
     transpileDependencies: [],
     // 生产环境sourceMap
     productionSourceMap: true,
     // webpack配置
     configureWebpack: () => {},
     chainWebpack: () => {},
     // css相关配置
     css: {
      // 启用 CSS modules
      modules: false,
      // 是否使用css分离插件
      extract: true,
      // 开启 CSS source maps?
      sourceMap: false,
      // css预设器配置项
      loaderOptions: {},
     },
     // webpack-dev-server 相关配置
     devServer: {
      host: '0.0.0.0',
      port: 8080,
      https: false,
      hotOnly: false,
      proxy: null, // 设置代理
      before: app => {}
     },
     // enabled by default if the machine has more than 1 cores
     parallel: require('os').cpus().length > 1,
     // PWA 插件相关配置
     pwa: {},
     // 第三方插件配置
     pluginOptions: {
      // ...
     }
}

浏览器兼容性

在package.json文件里多了一个browserslist字段,这个字段指定了项目兼容到哪些浏览器。

"browserslist": [
    "> 1%",
    "last 2 versions",
    "not ie <= 8"
  ]

这个字段会被babel用来确定转义的js特性和需要添加的css前缀。
参考资料:https://www.jianshu.com/p/bd9cb7861b85

插件

vue add eslint
vue add @vue/cli-plugin-eslint

安装后会在src目录下生成一个plugins目录,里面会生成插件的配置文件。

vue add 的设计意图是为了安装和调用 Vue CLI 插件。这不意味着替换掉普通的 npm 包。对于这些普通的 npm 包,你仍然需要选用包管理器。
我们推荐在运行 vue add 之前将项目的最新状态提交,因为该命令可能调用插件的文件生成器并很有可能更改你现有的文件。

HTML和静态资源

CSS相关

Vue CLI 项目默认支持PostCss、CSS Modules 和 包含 Sass、Less、stylus在内的预处理器(包还是要安装的,只是不用配置了)。
预处理器:
在创建项目的时候选择预处理器(sass/less/stylus)。如果当时没有选好,内置的webpack任然会被预配置为可以完成所有的处理,你也可以手动安装相应的webpack loader:

npm i sass-loader node-sass -D
npm i less-loader less -D
npm i stylus-loader stylus -D

PostCSS:
Vue CLi默认开启了autoprefixer(自动添加前缀),如果要配置目标浏览器,可使用package.json的browserslist字段,所以开发时只需使用无前缀的css规则即可。

环境变量和模式

VueCLI移除了配置文件目录后,如何自定义配置环境变量和模式?
环境变量:
一般项目中,我们针对不同的开发环境,会配置不同的环境变量,下面这些文件会在不同的环境下被载入:

  • .env #在所有环境中载入
  • .env.development #在开发环境中被载入
  • .env.production #在生产环境中被载入
  • .env.local #在所有环境中载入,会被git忽略
  • .env.development.local #在开发环境中载入,但会被git忽略
  • .env.development.local #在生产环境中载入,但会被git忽略
  1. 在根目录下新建两个文件.env.development,.env.production。用这两个文件存放环境变量。
// env.development
NODE_ENV=development
VUE_APP_URL=http://123.com

// env.production
NODE_ENV=production
VUE_APP_URL=http://456.com

变量必须以VUE_APP_开头
被载入的变量将会被vue-cli-service的所有命令、插件、依赖可用。

tips:
为一个特定模式准备的环境文件将会比一般的环境文件拥有更高的优先级。(列如.env.development的优先级比.env高)。

模式:
默认情况写,一个Vue CLi项目有三个模式:

  • development 模式用于 vue-cli-service serve
  • production 模式用于 vue-cli-service build 和 vue-cli-service test:e2e
  • test 模式用于 vue-cli-service test:unit

每个模式都会将NODE_ENV的值设置为模式的名称——比如在development模式下NODE_ENV的值会被设置为development。
可以在package.json中,通过传递 --mode 选项参数为命令行指定模式。

dev-build:"vue-cli-service build --mode development"    #指定模式

案例

//vue.config.js
module.exports = {
  baseUrl: process.env.NODE_ENV !== 'production' ? '/' : '/bl/',
// 这里在webpack配置时判断不同环境下使用不同配置
  configureWebpack: config => {
    if (process.env.NODE_ENV === "development") {
        config.devtool = "source-map";
    } else if (process.env.NODE_ENV === "production") {
        config.devtool = "eval-source-map";
    }
  }
}

如果安装完vue-cli3后,还想用vue-cli2怎么办?这个时候就需要安装一个桥接工具了

npm install -g @vue/cli-init
//安装完后 就还可以使用 vue init 命令
vue init webpack my-demo
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容

  • 1 Webpack 1.1 概念简介 1.1.1 WebPack是什么 1、一个打包工具 2、一个模块加载工具 3...
    Kevin_Junbaozi阅读 6,645评论 0 16
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139
  • 长发齐眉眼难睁 春风拂面玉虚宫 斜草倚靠梧桐木 一抹新绿似梦中
    三夫之阅读 154评论 0 0
  • 窗外,灯火辉煌,人们依旧忙忙碌碌,在这一年中的最后时刻,都在做着同一件事:在迎接新年的鞭炮声响起之前,一起...
    偷闲躲静阅读 334评论 0 0