详解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将数据库中的TEXT类型数据动态赋值到TEXTAREA中
Apr 20 Javascript
Dom操作之兼容技巧分享
Sep 20 Javascript
JavaScript提高性能知识点汇总
Jan 15 Javascript
JavaScript中的splice方法用法详解
Jul 20 Javascript
javascript代码调试之console.log 用法图文详解
Sep 30 Javascript
js实现登录验证码
Dec 22 Javascript
解析ajaxFileUpload 异步上传文件简单使用
Dec 30 Javascript
完美解决spring websocket自动断开连接再创建引发的问题
Mar 02 Javascript
AngularJS 验证码60秒倒计时功能的实现
Jun 05 Javascript
详解jquery插件jquery.viewport.js学习使用方法
Sep 08 jQuery
关于vue v-for循环解决img标签的src动态绑定问题
Sep 18 Javascript
jQuery属性选择器用法实例分析
Jun 28 jQuery
详解新手使用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
COM in PHP (winows only)
2006/10/09 PHP
PHP 引用文件技巧
2010/03/02 PHP
php比较多维数组中值的大小排序实现代码
2012/09/08 PHP
php中删除数组的第一个元素和最后一个元素的函数
2015/03/07 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
2015/09/29 PHP
一个简单安全的PHP验证码类、PHP验证码
2016/09/24 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
2019/04/12 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
jQuery 动画弹出窗体支持多种展现方式
2010/04/29 Javascript
javascript 四则运算精度修正函数代码
2010/05/31 Javascript
js arguments对象应用介绍
2012/11/28 Javascript
解决javascript:window.close()在chrome,Firefox下失效的问题
2013/05/07 Javascript
js复制到剪切板的实例方法
2013/06/28 Javascript
js限制文本框的输入内容代码分享(3类)
2015/08/20 Javascript
javascript实现拖动元素交换位置
2015/11/29 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
js匿名函数使用&amp;传参(实例)
2017/09/08 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
jQuery完成表单验证的实例代码(纯代码)
2017/09/30 jQuery
Vue.js组件间的循环引用方法示例
2017/12/27 Javascript
基于ionic实现下拉刷新功能
2018/05/10 Javascript
JS实现点击拉拽轮播图pc端移动端适配
2018/09/05 Javascript
详解Eslint 配置及规则说明
2018/09/10 Javascript
Python基于pygame实现的font游戏字体(附源码)
2015/11/11 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
django rest framework 实现用户登录认证详解
2019/07/29 Python
html5开发之viewport使用
2013/10/17 HTML / CSS
和睦家庭事迹
2014/05/14 职场文书
生物工程专业求职信
2014/09/03 职场文书
志愿者个人总结
2015/03/03 职场文书
公司辞职信模板
2015/05/13 职场文书
就业指导讲座心得体会
2016/01/15 职场文书
2016年教师学习教师法心得体会
2016/01/20 职场文书
2016年圣诞节义工活动总结
2016/04/01 职场文书
Python读写yaml文件
2022/03/20 Python