前言

前端变化日新月异,层出不穷,公司原项目使用vuecil2版本开发,elementUI等一系列库版本太低,也脱离世界很久远了,新版本库需要webpack4等环境,而老版本配置起来bug很多,在使用过程中很多东西都不能实现,所以升级真的是迫在眉睫;

此篇会逐步解析:

  • vuecil2如何升级到vuecil3+
  • vuecil3+的语法
  • 二次升级维护手册
  • webpack配置项目的优化…

一、vuecil2如何升级到vuecil3+

卸载旧版本

Vue CLI 的包名称由 vue-cli 改成了 @vue/cli。 如果你已经全局安装了旧版本的 vue-cli (1.x 或 2.> x),你需要先通过 npm uninstall vue-cli -g 或 yarn global remove vue-cli 卸载它。

node配置

Vue CLI3+ 需要 Node.js 8.9 或更高版本 (推荐 8.11.0+)

全局安装包

npm install -g @vue/cli
# OR
yarn global add @vue/cli

创建一个项目

vue create vue-web-cil4

安装所需选择配置:可参考官方配置

二、vuecil3/vuecil4的配置语法

2.1 目录结构

├── README.md                    # 说明
|-- dist                        # 打包后文件夹
├── babel.config.js             # babel语法编译
├── package-lock.json
├── public                      # 静态文件夹,这类资源将会直接被拷贝,而不会经过 webpack 的处理。
│   ├── favicon.ico
│   └── index.html              #入口页面
└── src                         # 源码目录├── App.vue - 页面├── assets  - 静态目录,这类引用会被 webpack 处理。│   └── logo.png├── components 组件│   └── HelloWorld.vue└── main.js                  # 入口文件,加载公共组件
│—— vue.config.js                # 配置文件,需自行配置
│—— .gitignore                  # git忽略上传的文件格式
│—— babel.config.js             # babel语法编译
│—— package.json             # 项目基本信息
│—— .env             # 环境变量和模式,需自行配置
│—— .eslintrc.js                # ES-lint校验                   

2.2 vue.config.js 配置

vuecil3+和vuecil2的最大区别就在于内置了很多配置,没有了build文件夹和config的配置。但是在开发中,避免不了的还是需要个性化的配置,之前有写过ts+vue中的vue.config.js的配置文件,这里系统讲一下 vue.config.js的配置;

  • 首先在最外层目录下新建文件vue.config.js
  • 具体配置
// vue.config.js
const path =  require('path');
const resolve = (dir) => path.join(__dirname, dir);const CompressionWebpackPlugin = require("compression-webpack-plugin"); // 开启gzip压缩(可选)
const productionGzipExtensions = /\.(js|css|json|txt|html|ico|svg)(\?.*)?$/i; // 开启gzip压缩(可选)const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin; // 打包分析,(可选)const IS_PRODUCTION = ['production', 'prod'].includes(process.env.NODE_ENV);//判断是否是生产环境
/** 正式配置项,以下参数 都是可选**/
module.exports = {publicPath: process.env.NODE_ENV === 'production' ? '/site/vue-demo/' : '/',  // 打包公共路径indexPath: 'index.html' , // 相对于打包路径index.html的路径outputDir: process.env.outputDir || 'dist', // 'dist', 生产环境构建文件的目录assetsDir: 'static', // 相对于outputDir的静态资源(js、css、img、fonts)目录lintOnSave: false, // 是否在开发环境下通过 eslint-loader 在每次保存时 lint 代码,false不需要runtimeCompiler: true, // 是否使用包含运行时编译器的 Vue 构建版本productionSourceMap: !IS_PRODUCTION, // 生产环境的 source map,parallel: require("os").cpus().length > 1, // 是否为 Babel 或 TypeScript 使用 thread-loader。该选项在系统的 CPU 有多于一个内核时自动启用,仅作用于生产构建。pwa: {}, // 向 PWA 插件传递选项。chainWebpack: config => {config.resolve.symlinks(true); // 修复热更新失效// 如果使用多页面打包,使用vue inspect --plugins查看html是否在结果数组中config.plugin("html").tap(args => {// 修复 Lazy loading routes Errorargs[0].chunksSortMode = "none";return args;});config.resolve.alias // 添加别名.set('@', resolve('src')).set('@assets', resolve('src/assets')).set('@components', resolve('src/components')).set('@views', resolve('src/views')).set('@store', resolve('src/store'));// 压缩图片// 需要 npm i -D image-webpack-loaderconfig.module.rule("images").use("image-webpack-loader").loader("image-webpack-loader").options({mozjpeg: { progressive: true, quality: 65 },optipng: { enabled: false },pngquant: { quality: [0.65, 0.9], speed: 4 },gifsicle: { interlaced: false },webp: { quality: 75 }});// 打包分析, 打包之后自动生成一个名叫report.html文件(可忽视)if (IS_PRODUCTION) {config.plugin("webpack-report").use(BundleAnalyzerPlugin, [{analyzerMode: "static"}]);}},//webpack的配置项configureWebpack: config => {// 开启 gzip 压缩// 需要 npm i -D compression-webpack-pluginconst plugins = [];if (IS_PRODUCTION) {plugins.push(new CompressionWebpackPlugin({filename: "[path].gz[query]",algorithm: "gzip",test: productionGzipExtensions,threshold: 10240,minRatio: 0.8}));}config.plugins = [...config.plugins, ...plugins];},css: {extract: IS_PRODUCTION,requireModuleExtension: false,// 去掉文件名中的 .moduleloaderOptions: {// 给 less-loader 传递 Less.js 相关选项less: {// `globalVars` 定义全局对象,可加入全局变量globalVars: {primary: '#333'}}}},devServer: {overlay: { // 让浏览器 overlay 同时显示警告和错误warnings: true,errors: true},host: "localhost",port: 8080, // 端口号https: false, // https:{type:Boolean}open: false, //配置后自动启动浏览器hotOnly: true, // 热更新// proxy: 'http://localhost:8080'   // 配置跨域处理,只有一个代理proxy: { //配置多个跨域"/api": {target: "http://197.0.0.1:8088",changeOrigin: true,ws: true,//websocket支持secure: false,pathRewrite: {"^/api": "/"}},"/api2": {target: "http://197.0.0.2:8088",changeOrigin: true,//ws: true,//websocket支持secure: false,pathRewrite: {"^/api2": "/"}},}}
}

以上配置按需引用,常见的配置项都已经写出,其他特殊可参考vue-cil官网,有问题可以留言问我;

注意:光理论是不够的,,在此送大家2020最新企业级 Vue3.0/Js/ES6/TS/React/node等实战视频教程,点击此处 免费获取,小白勿进哦

2.3 环境变量的配置

vuecil3+关于环境变量的配置方式也发生的改变

  • 在package.json同级新建文件.env
  • 注意事项
  1. 环境变量的配置值只能是 键值对 形式,不需要带双引号;
  2. 如果想分开发环境或生产环境类分别配置,则同级新建.env.development.env.production文件并书写相关键值对,此文件优先级大于.env文件;
  3. 只有以 VUE_APP_ 开头的变量会被 webpack.DefinePlugin 静态嵌入到客户端侧的包中,变量书写VUE_APP_*才会生效;
  • .env文件配置及使用
//.env
VUE_APP_TITLE=MY VUE APP
VUE_APP_NAME= JCAT_李小黑
  • 页面中使用:
console.log(process.env.VUE_APP_TITLE)//"MY VUE APP"
console.log(process.env.VUE_APP_NAME) // "JCAT_李小黑"

三、vuecil3中的启动打包命令

3.1 package.json文件

 "scripts": {"serve": "vue-cli-service serve", //启动"build": "vue-cli-service build", //打包"lint": "vue-cli-service lint" //eslint},

3.2 命令

//启动项目
npm run serve
//打包项目
npm run build

3.3 更多命令配置

  • 如果不习惯npm run serve,可以配置继续使用npm run dev来启动项目;
 "scripts": {"dev": "vue-cli-service serve", //启动},
  • 如果默认localhost访问的同时需要使用本地ip+端口方式访问,则配置:
 "scripts": {"serve": "vue-cli-service serve --host 0.0.0.0", //启动},

总结

这篇就主要讲vuecil3/4+的配置于之前的版本不同的地方。但路由,vuex用法并没有变化,所以我们项目升级的方法就是:新建了vuecil4.4的新版本项目,然后将src文件代码整体复制到新项目内,启动测试无误。

现版本在打包速度和启动时间上比旧版本优秀,但是改变并不是质的飞跃,升级的目的还是为了整体升级成webpack4+及其他插件的使用。

升级记录:
vue项目升级(02):vue项目中的旧版本 npm包怎么持续升级维护

over~有问题留言

如果本文对你有帮助的话,请不要忘记给我点赞打call哦~o( ̄▽ ̄)do

vue项目升级(01):全面解析vuecil3/vuecil4的vue.config.js等常用配置相关推荐

  1. Vue项目全面解析vuecil3/vuecil4的vue.config.js等常用配置

    前端变化日新月异,层出不穷,公司原项目使用vuecil2版本开发,elementUI等一系列库版本太低,也脱离世界很久远了,新版本库需要webpack4等环境,而老版本配置起来bug很多,在使用过程中 ...

  2. vue 安装 less_解决旧Vue项目升级less-loader 6.0.0报错

    作为一个爱折腾的主,我的package随时都是ncu -u! 何为ncu,就是检查nodejs npm/yarn项目依赖最新版本package.json一个插件! 这不,前几天less-loader ...

  3. vue.config.js多页配置

    vue.config.js多页配置,具体看代码: "use strict"; const path = require("path"); var webpack ...

  4. vue.config.js中lintOnSave配置

    在vue.config.js文件中配置了lintOnSave属性 作用:设置是否在开发环境下每次保存代码时都启用 eslint验证. value: false:关闭每次保存都进行检测 true:开启每 ...

  5. typescript vuex_将已有的Vue项目升级支持TypeScript

    TypeScript是js的超集,是由微软开发的.越来越多的项目使用TypeScript.像现在很火的Visual Studio Code就是使用TypeScript开发. 本人开发过一段Angula ...

  6. vue项目构建实战基础知识:SPA理解/RESTful接口介绍/static目录配置/axios封装/打包时map文件去除...

    一.SPA 不是指水疗.是 single page web application 的缩写.中文翻译为 单页应用程序 或 单页Web应用,更多解释请自行搜索. 所有的前端人员都应该明白我们的页面的 u ...

  7. vue项目中z-index不起作用(将vue实例挂在到window上面)

    问题描述:由于原有项目(传统项目)中嵌入新的vue组件,dialog弹出框的z-index:999999:任然不起作用: 解决办法:将vue实例挂载到window 解决代码如下: 入口文件index. ...

  8. vue项目编写html,从头搭建、编写一个VUE项目

    一.创建VUE项目 1.新建一个vue项目 进入工作目录,新建一个vue项目:vue init webpack 项目名 vue init webpack vue-project-demo image. ...

  9. Vue项目开发过程中解决跨域问题(vue.config.js结合axios)

    一.问题描述 在本地开发过程中,调用后端提供的接口获取数据将获取的数据渲染到页面中,但是浏览器报错: // 控制台报错信息 Access to XMLHttpRequest at 'http://x. ...

最新文章

  1. Mybatis各种模糊查询
  2. 这 24 个高频存储问题,你一定要知道
  3. python列表统计每个元素出现次数_python 统计list中各个元素出现的次数的几种方法...
  4. Windows PowerShell:(2)基本操作
  5. css3中的渐变效果及花斑动画的实现
  6. 狼组安全平台免杀使用指南
  7. 安装slide后Powerpoint 不自动退出的解决方案
  8. 车聘网框架及源码介绍
  9. 玩玩直播,搭建一个流媒体服务器
  10. 兄弟连php课程,LAMP兄弟连PHP课程学习笔记 第一天 PHP基本语法
  11. HCIA—冲突域与广播域(详解 + 区别)
  12. Ubuntu使用WakeOnLan远程开机
  13. CEOI2017 D1T3 mousetrap 树形dp+二分答案
  14. Spark学习之路——9.Spark ML
  15. 方法解读 | 性染色体Phasing
  16. 搜狗输入法 android 历史版本,搜狗输入法旧版
  17. 利用LabVIEW开发应变量测试
  18. 【大厂智力题】64匹马,8个赛道,找出前4名最少比赛多少场?
  19. 虚拟化技术之KVM,搭建KVM(详细)
  20. 单片机控制蜂鸣器和弦音发音程序

热门文章

  1. 新买的笔记本计算机内存不足,笔记本电脑内存不足怎么办 解决方法【图文教程】...
  2. limerence是什么意思
  3. 手机端能学习html吗,【学习】如何制作手机端html模板(REM的实际应用)
  4. Mybatis 源码阅读环境搭建
  5. 计算机应用基础补考题目,东北农业大学20秋《计算机应用基础》补考在线测试试题...
  6. oracle数据库报错12154,PL/SQL登录Oracle数据库报错ORA-12154:TNS:无法解析指定的连接标识符解决方法...
  7. 用一段哲理来鞭策自己
  8. mitmproxy工具
  9. 笔记本或台式电脑开机黑屏的现象分析及处理办法
  10. 夸克APP端智能:文档关键点检测实践与应用