详解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 相关文章推荐
javascript常见数字进制转换实例分析
Apr 21 Javascript
原生js实现日期计算器功能
Feb 17 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
Mar 26 Javascript
js canvas实现红包照片效果
Aug 21 Javascript
JS获取并处理php数组的方法实例分析
Sep 04 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
Nov 29 Javascript
JQueryDOM之样式操作
Mar 27 jQuery
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
Apr 04 Javascript
vue filter 完美时间日期格式的代码
Aug 14 Javascript
vue 实现v-for循环回来的数据动态绑定id
Nov 07 Javascript
js实现提交前对列表数据的增删改查
Jan 16 Javascript
React如何使用axios请求数据并把数据渲染到组件
Aug 05 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
PHP4实际应用经验篇(8)
2006/10/09 PHP
PHP中的extract的作用分析
2008/04/09 PHP
php中使用sftp教程
2015/03/30 PHP
thinkPHP下的widget扩展用法实例分析
2015/12/26 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)
2007/03/10 Javascript
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
JavaScript 嵌套函数指向this对象错误的解决方法
2010/03/15 Javascript
简单实例处理url特殊符号&amp;处理(2种方法)
2013/04/02 Javascript
Js 去掉字符串中的空格(实现代码)
2013/11/19 Javascript
jquery实现鼠标拖动图片效果示例代码
2014/01/09 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
jquery性能优化高级技巧
2015/08/24 Javascript
纯js三维数组实现三级联动效果
2017/02/07 Javascript
jQuery is not defined 错误原因与解决方法小结
2017/03/19 Javascript
详解vue-resource promise兼容性问题
2017/06/20 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
2020/11/05 Javascript
[49:08]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
用matplotlib画等高线图详解
2017/12/14 Python
浅谈Django自定义模板标签template_tags的用处
2017/12/20 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
Python中的heapq模块源码详析
2019/01/08 Python
做一个能自适应高度的textarea的示例代码
2019/09/06 HTML / CSS
HTML利用九宫格原理进行网页布局
2020/03/13 HTML / CSS
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
Java程序员常见面试题
2015/07/16 面试题
双创工作实施方案
2014/03/26 职场文书
条幅标语大全
2014/06/20 职场文书
大学生工作求职信
2014/06/23 职场文书
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
争先创优个人总结
2015/03/04 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
win10更新失败无限重启解决方法
2022/04/19 数码科技
Python自动化实战之接口请求的实现
2022/05/30 Python