详解vue-cli@2.x项目迁移日志


Posted in Javascript onJune 06, 2019

vue-cli@2.x项目迁移日志

虽然 vue-cli@3 早就已经巨普及了,新项目应该已经很少有人还有使用 vue-cli@2.x 。 但是对于一些稍微早些时候的 vue 项目,如果当时没有做一些优化、配置,随着 webpack vue 等包的升级,有一些配置已经不一样了,并且关于 vue-cli@2.x 项目的文档、博客也越来越少,如果遇到问题也许也会有麻烦,因此就想着把当前的 vue-cli@2.x 项目原地升级配置。

项目结构

vue-cli@2.x 项目结构,其中红色圈出的部分是 2.x 版本才有的。

详解vue-cli@2.x项目迁移日志

vue-cli@3.x 目录结构, 箭头指出的两个文件的作用几乎完全替代上面的 build , config 文件夹中的文件,以及根目录下的 postcss 和 babel 配置文件的作用。

详解vue-cli@2.x项目迁移日志

迁移配置

新建 babel.config.js 文件, 内容是

module.exports = {
 presets: [
  '@vue/app'
 ]
}

新建 vue.config.js 文件,内容是:

const isProduct = process.env.NODE_ENV === 'production';

module.exports = {
 publicPath: isProduct ? 'xxx' : ''
};

需要注意的是,在 vue-cli@2.x 中我们设置的 assetsPublicPath 属性,在 vue-cli@3 中已经更名为 publicPath, 这个属性可以简单理解为打包出来的 js css img 文件在被 index.html 文件引入的时候添加的前缀。

直接将 static 文件夹更名为 public ,并且将根目录中的 index.html 文件也拖进 public文件夹中。这里需要注意的是,原来我们放在 static 中的静态资源,在代码中引用的时候,路径可能会写为 /static/img/xxx.jpg, 移动到 public 文件夹中之后,需要删除 static 前缀,直接引用 /img/xxx.jpg 即可。

直接将 static 文件夹中的资源全都拖进,新建 public 文件夹

接下来改动比较多的就是 package.json中的依赖包了

// 修改执行脚本
"start": "npm run serve",
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
// 需要手动更新一下 vue 和 vue-template-compiler 的版本,如果版本没有对象 npm start 就不成功,但是也不是严格的版本号一致,具体没研究过对应关系,直接从 vue-cli@3 初始化项目中抄版本号即可
 "dependencies": {
 ...
  "vue": "^2.6.10",
  "vue-router": "^2.3.1",
  "vuex": "^2.3.1"
 },
 // 这里的 7 个依赖都必须有,并且因为 webpack 功能被内置到 @vue/cli-service 中去了,所以原来 devDependencies 中根打包相关的依赖包都可以删除了。
 "devDependencies": {
  "@vue/cli-plugin-babel": "^3.7.0",
  "@vue/cli-plugin-eslint": "^3.7.0",
  "@vue/cli-service": "^3.7.0",
  "babel-eslint": "^10.0.1",
  "eslint": "^5.16.0",
  "eslint-plugin-vue": "^5.0.0",
  "vue-template-compiler": "^2.5.21",
  ...
 }

详解vue-cli@2.x项目迁移日志

删除原来的依赖,重新安装新的依赖

rm -rf node_modules && cnpm i

重新执行试试 npm start

此时很可能会遇到一个问题:

[Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build.

是因为 vue 当前被编译的版本不对,造成这个影响主要是因为 webpack 的配置被修改引起的。 随便依照能找到很多解决办法,但是最好的办法是按照 vue-cli@3

// 将 main.js 中 new Vue 的参数修改一下形式

// vue-cli@2.x
new Vue({
 el: '#app',
 router,
 components: { App },
 template: '<App/>'
})

// 修改为 vue-cli@3 中默认的形式
new Vue({
 router,
 render: h => h(App),
}).$mount('#app')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js DOM的学习笔记
Dec 22 Javascript
javascript字母大小写转换的4个函数详解
May 09 Javascript
AngularJS初始化过程分析(引导程序)
Dec 06 Javascript
JS弹出对话框实现方法(三种方式)
Dec 18 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
Jun 01 Javascript
jquery ezUI 双击行记录弹窗查看明细的实现方法
Jun 01 Javascript
AngularJS实现一次监听多个值发生的变化
Aug 31 Javascript
js编写的treeview使用方法
Nov 11 Javascript
JavaScript之浏览器对象_动力节点Java学院整理
Jul 03 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
Oct 27 Javascript
JavaScript引用类型RegExp基本用法详解
Aug 09 Javascript
原生js实现移动小球(碰撞检测)
Dec 17 Javascript
详解新手使用vue-router传参时注意事项
Jun 06 #Javascript
vue-cli配置全局sass、less变量的方法
Jun 06 #Javascript
解决vue组件props传值对象获取不到的问题
Jun 06 #Javascript
webpack4之如何编写loader的方法步骤
Jun 06 #Javascript
vue 插件的方法代码详解
Jun 06 #Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
Jun 06 #jQuery
node.js的http.createServer过程深入解析
Jun 06 #Javascript
You might like
PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
2009/08/07 PHP
thinkphp实现发送邮件密码找回功能实例
2014/12/01 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
基于laravel where的高级使用方法
2019/10/10 PHP
给Javascript数组插入一条记录的代码
2007/08/30 Javascript
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
2010/04/18 Javascript
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
window.onload使用指南
2015/09/13 Javascript
jQuery实现背景弹性滚动的导航效果
2016/06/01 Javascript
纯JS焦点图特效实例(可一个页面多用)
2016/12/07 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
2017/07/13 Javascript
JS自定义函数实现时间戳转换成date的方法示例
2017/08/27 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
通过JS运行机制的角度说说作用域
2019/03/12 Javascript
node.js ws模块搭建websocket服务端的方法示例
2019/04/25 Javascript
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
python实现挑选出来100以内的质数
2015/03/24 Python
Djang中静态文件配置方法
2015/07/30 Python
python连接数据库的方法
2017/10/19 Python
Python中pandas dataframe删除一行或一列:drop函数详解
2018/07/03 Python
使用python根据端口号关闭进程的方法
2018/11/06 Python
python装饰器简介---这一篇也许就够了(推荐)
2019/04/01 Python
python3中eval函数用法使用简介
2019/08/02 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
Python的in,is和id函数代码实例
2020/04/18 Python
HTML5 Canvas中绘制椭圆的4种方法
2015/04/24 HTML / CSS
HTML5播放实现rtmp流直播
2020/06/16 HTML / CSS
Gtech官方网站:地毯清洁器、吸尘器及园艺设备
2018/05/23 全球购物
户籍证明的格式
2014/01/13 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android