详解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打开新窗口同时关闭旧窗口
Jan 16 Javascript
javascript attachEvent和addEventListener使用方法
Mar 19 Javascript
关于取不到由location.href提交而来的上级页面地址的解决办法
Jul 30 Javascript
JQuery从头学起第三讲
Jul 06 Javascript
js的表单操作 简单计算器
Dec 29 Javascript
javascript实现俄罗斯方块游戏的思路和方法
Apr 27 Javascript
利用JQuery直接调用asp.net后台的简单方法
Oct 27 Javascript
echarts设置图例颜色和地图底色的方法实例
Aug 01 Javascript
javascript中函数的写法实例代码详解
Oct 28 Javascript
JavaScript实现选项卡效果的分析及步骤
Apr 16 Javascript
如何对react hooks进行单元测试的方法
Aug 14 Javascript
解决vue 退出动画无效的问题
Aug 09 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
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
2006/07/09 PHP
jq的get传参数在utf-8中乱码问题的解决php版
2008/07/23 PHP
php数组合并与拆分实例分析
2015/06/12 PHP
php类常量用法实例分析
2015/07/09 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
2016/04/01 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
短信提示使用 特效
2007/01/19 Javascript
JTrackBar水平拖动效果
2007/07/15 Javascript
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
jQuery实现为图片添加镜头放大效果的方法
2015/06/25 Javascript
JavaScript_object基础入门(必看篇)
2016/06/13 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
概述javascript在Google IE中的调试技巧
2016/11/24 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
脚手架vue-cli工程webpack的作用和特点
2018/09/29 Javascript
JS实现图片拖拽交换效果
2018/11/30 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
2019/09/20 Javascript
vue中实现图片压缩 file文件的方法
2020/05/28 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
2020/09/01 Javascript
使用python编写脚本获取手机当前应用apk的信息
2014/07/21 Python
简单实现python爬虫功能
2015/12/31 Python
Python的dict字典结构操作方法学习笔记
2016/05/07 Python
一个基于flask的web应用诞生(1)
2017/04/11 Python
Apache如何部署django项目
2017/05/21 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
2018/02/08 Python
Python DataFrame设置/更改列表字段/元素类型的方法
2018/06/09 Python
python 字典中取值的两种方法小结
2018/08/02 Python
django orm 通过related_name反向查询的方法
2018/12/15 Python
Python文字截图识别OCR工具实例解析
2020/03/05 Python
美国最大的旗帜经销商:Carrot-Top
2018/02/26 全球购物
UNIONBAY官网:美国青少年服装品牌
2019/03/26 全球购物
外语学院毕业生的自我鉴定
2013/11/28 职场文书
2014学雷锋活动总结
2014/03/09 职场文书
意向协议书范本
2014/04/23 职场文书
病人慰问信范文
2015/02/15 职场文书