原文地址

对于没有了解过 vue-cli3 的童鞋,建议先去看看官方的教程: 传送门

新版本的新特性

1. 插件

使用 cli 的插件,可以很快的搭建一个项目的结构。如 axios 的插件 vue-cli-plugin-axios,可以自动创建一个带有 request 和 resonpose 的拦截器的 axios 的实例的文件。使用时直接引入即可。

ps:一般插件新建的文件都放在 src/plugin 文件夹下。

2. 减少配置

vue-cli3 中内置了很多 webpack 的配置,如 babel,各个 css 预编译器,几乎只需要安装完相对应的 loader 即可开箱即用,无需过多的配置即可直接开发。

3. 图形化

自带的 GUI 界面直接将上手成本置为 0。在终端中运行命令: vue ui 打开浏览器中就可以愉快的使用 GUI 进行项目管理。

vue-cli2 的迁移

src

直接覆盖即可。

static

直接复制到新项目的 public/static 即可。

index.html

复制覆盖至 public 目录下的 index.html 即可。

CDN 配置

旧版的可以看这里:记一次使用 vue-admin-template 的优化历程

新版的基本不用怎么修改即可直接使用:

const webpack = require('webpack')
const path = require('path')
const HtmlWebpackIncludeAssetsPlugin = require('html-webpack-include-assets-plugin')
const Vue = require('vue')
const Buefy = require('buefy/package.json')
const AV = require('leancloud-storage')
const externals = {// 'element-ui':'ELEMENT'
}
const assets = [{ path: 'https://unpkg.com/buefy@0.6.6/lib/buefy.min.css', type: 'css'}
]
console.log(process.env.NODE_ENV, AV.version)const isProd = process.env.NODE_ENV === 'production'if (isProd) {externals['vue'] = 'Vue'externals['buefy'] = 'Buefy'externals['leancloud-storage'] = 'AV'// externals['element-ui'] = 'ELEMENT'assets.push({ path: `https://lib.baomitu.com/vue/${Vue.version}/vue.min.js`, type: 'js' },{ path: `https://unpkg.com/buefy@${Buefy.version}/lib/index.js`, type: 'js' },{ path: `https://cdn.jsdelivr.net/npm/leancloud-storage@${AV.version}/dist/av-min.js`, type: 'js' },)
}const plugins = [{name: 'html-assets',func: HtmlWebpackIncludeAssetsPlugin,options: {assets,// 是否在 webpack 注入的 js 文件后新增?true 为 append, false 为 prepend。// 生产环境中,这些 js 应该先加载。append: !isProd,publicPath: '',}
}, {name: 'dll',func: webpack.DllReferencePlugin,options: {context: path.join(__dirname, '../'),manifest: require('../configs/vendor-manifest.json')}
}]module.exports = {externals,plugins
}

DLL Plugin

旧版的可以看这里:记一次使用 vue-admin-template 的优化历程

主要还是 webpack4 只需要配置一个 mode: 'production' 即可,无需再额外配置繁琐的 webpack.optimization

package.json 中添加新的命令:

{"build:dll": "webpack --config configs/dll.js --mode production"
}

再安装新的命令包,让 yarn/npm 可以直接使用 webpack 命令:

$ yarn add -D webpack-command

新增 configs/dll.js 文件:

const webpack = require('webpack');
const path = require('path');const utils = {assetsPath: function (_path) {const assetsSubDirectory = process.env.NODE_ENV === 'production'// 生产环境下的 static 路径? 'static'// 开发环境下的 static 路径: 'static'return path.posix.join(assetsSubDirectory, _path)}
}function resolve(dir) {return path.join(__dirname, '..', dir)
}
const vendors = [// 这里填写需要打进 dll 的包名。
];
const context = path.join(__dirname, '../')
const webpackConfig = {// 无需配置 webpack.optimizationmode: 'production',context,output: {path: path.join(__dirname, '../public/js/'),filename: '[name].dll.js',library: '[name]_[hash]',},entry: {"vendor": vendors,},plugins: [new webpack.DllPlugin({context,path: path.join(__dirname, '.', '[name]-manifest.json'),name: '[name]_[hash]',})],module: {// 如用不上可以删除。rules: [{test: /\.js$/,loader: 'babel-loader',include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]},{test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,loader: 'url-loader',options: {limit: 10000,name: utils.assetsPath('img/[name].[hash:7].[ext]')}},{test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,loader: 'url-loader',options: {limit: 10000,name: utils.assetsPath('media/[name].[hash:7].[ext]')}},{test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,loader: 'url-loader',options: {limit: 10000,name: utils.assetsPath('fonts/[name].[hash:7].[ext]')}}]}
};module.exports = webpackConfig

其他配置

vue-cli3 的其他所有 webpack 都可以通过 vue.config.js 进行配置,需要手动新建

vue.config.js

const {externals, plugins} = require('./config/cdn')
module.exports = {baseUrl: process.env.NODE_ENV === 'production'? '/PRODUCTION/': '/',chainWebpack: config => {// use webpack-chain instead of webpack.config// 注入 cdn 和 dll 插件plugins.forEach(plugin => {config.plugin(plugin.name).use(plugin.func, [plugin.options])})// 使用 externals.config.externals(externals)}
}

推荐在 vue.config.js 中使用 webpack-chain 进行配置

Pug 配置

安装尤大的 pug-plain-loader: yarn add -D pug-plain-loader

chainWebpack 添加:

config.module.use('pug').test(/\.pug$/).end()
Sass 配置

只需要安装 sass-loader 即可。

如需使用 fast-sass-loader 代替,则需要修改配置:

;['scss', 'sass'].forEach(style => {['vue', 'vue-modules', 'normal-modules', 'normal'].forEach(one => {config.module.rule(style).oneOf(one).use('sass-loader').loader('fast-sass-loader').end()})
})
Vux 配置

未研究出,卒。

总结

不得不说,新版的 cli 真的很方便新手,配合 webpack-chain 也可以清晰明了的去配置 webpack,只是兼容性需要一步步去摸索。GUI 的界面让管理 vue 项目变得更加简单。

如迁移过程中有任何疑问,可以留言一起探讨。

Vue-cli3 简qian易yi教程相关推荐

  1. vue cli3关闭烦人的eslint 亲测有效

    文章目录 踩坑前言 vue cli版本 vue cli目录结构 vue cli3关闭eslint正确姿势 vue cli3删除部分eslint配置 vue cli3删除全部eslint配置 踩坑前言 ...

  2. Vue CLI3搭建的项目中,如何给文件夹起别名?

    因为这段大年的时间里,好久没写博客了,是好懒散了.真的是少年易老学难成,一寸光阴不可轻啊.浪费一秒钟是一秒钟的罪过. 我们使用Vue CLI3搭建的项目中,在vue.config.js文件中,在给文件 ...

  3. vue cli项目升级--vue cli3升级到vue cli4

    原文网址:vue cli项目升级--vue cli3升级到vue cli4_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍如何升级vue项目的vue cli版本. 官方网址 https://c ...

  4. cli vue 卸载,vue Cli 环境删除与重装教程 - 版本文档

    vue-cli 卸载,版本选择,安装 · 检测(图文教程:vue Cli 环境删除与重装) 重要说明: vue-cli 3.0+版本,使用的不是vue-cli,而是@vue/cli: 如果用以上的安装 ...

  5. 易百教程人工智能python修正-人工智能无监督学习(聚类)

    无监督机器学习算法没有任何监督者提供任何指导. 这就是为什么它们与真正的人工智能紧密结合的原因. 在无人监督的学习中,没有正确的答案,也没有监督者指导. 算法需要发现用于学习的有趣数据模式. 什么是聚 ...

  6. Vue CLI3.0 中使用jQuery 和 Bootstrap

    Vue 中使用 jQuery 和 Bootstrap 不是特别符合 Vue 原生的写法,但是有时候又要用,所以放上我的引入设置,供大家参考. 在 Vue CLI2.0 中引入 jQuery 和 Boo ...

  7. vue cli3 绑定域名_使用CLI设置WildFly绑定地址并关闭

    vue cli3 绑定域名 仅使用命令行参数将WildFly绑定到主机名/ IP上非常容易. 我有一个简单的GNU / Linux盒子,可以用它玩各种东西,其中之一就是WildFly. 我使用以下命令 ...

  8. vue/cli3 配置vux

    安装各插件 试过 安装"必须安装"的部分亦可 1.安装vuex npm install vuex --save-dev 2.在项目里面安装vux[必须安装] npm install ...

  9. 八、Vue cli3详解学习笔记

    一.认识Vue CLI3 1.1 vue-cli 3 与 2 版本有很大区别: vue-cli 3 是基于 webpack 4 打造,vue-cli 2 还是 webapck 3 vue-cli 3 ...

最新文章

  1. 理解什么是MyBatis?
  2. 直方图应用:直方图均衡化,直方图匹配,对比直方图
  3. linux电脑系统投到电视,教你如何在Linux操作系统下观看电视节目
  4. 富士施乐打印机-查看端口号
  5. lan8720a自协商启动_紫金矿业2020届校招海外9站全面启动(面向全专业)
  6. java jconsole rmi 连接不上
  7. learnpythonthehardway下载_LearnPythonTheHardWay学习笔记1:学习环境搭建
  8. 笨办法学 Python · 续 练习 3:质量
  9. iOS10 CAAnimationDelegate适配引申到条件编译
  10. MAC系统XAMPP 中 MySQL命令行client配置使用
  11. Codeforces 437D The Child and Zoo(贪心+并查集)
  12. 龙蜥社区首届理事大会圆满召开!14家理事代表出席
  13. js 各种正则表达式一览表
  14. Detect-and-Track: Efficient Pose Estimation in Videos(检测和追踪:视频中有效的姿态评估)论文解读
  15. POJ 3080 Blue Jeans(KMP + 暴力)
  16. 码出高效:Java开发手册PDF
  17. Java 在线编辑 Excel
  18. 用来判断当前python语句在分支结构中是_【单选题】哪个选项是用来判断当前 Python 语句在分支结构中?...
  19. 金海佳学C++primer 练习9.47
  20. 随笔感悟:Mysql悲观锁和乐观锁

热门文章

  1. 智能家居控制面板的智能化升级:AI技术带来的新变革
  2. MFC Windows 程序设计(3)
  3. 根据身份证统计各年龄段的性别人数
  4. 邓白氏号码(DUNS Number)查询
  5. 自适应LASSO的Oracle性质,最新变量选择_惩罚似然_自适应Lasso_SCAD_Oracle性质论文
  6. linux系统chromium设置中文,在linux上使用更新替代设置Chromium作为默认的web浏览器...
  7. 数据结构初阶最终章------>经典八大排序(C语言实现)
  8. java run on server_web项目没有run on server时..
  9. 营销的境界,向往美好生活。
  10. ps制作高档大气仿工笔画美女