详解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数字输入框(包括最大值最小值限制和四舍五入)
Nov 24 Javascript
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
Mar 08 Javascript
javascript开发随笔一 preventDefault的必要
Nov 25 Javascript
用js的for循环获取radio选中的值
Oct 21 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
Apr 17 Javascript
javascript中return,return true,return false三者的用法及区别
Nov 17 Javascript
jQuery实现验证年龄简单思路
Feb 24 Javascript
深入理解js generator数据类型
Aug 16 Javascript
jQuery设置Easyui校验规则(推荐)
Nov 21 Javascript
详解 vue.js用法和特性
Oct 15 Javascript
详解vue-router数据加载与缓存使用总结
Oct 29 Javascript
解决vue打包 npm run build-test突然不动了的问题
Nov 13 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的一些基础知识分享
2011/07/27 PHP
linux系统下php安装mbstring扩展的二种方法
2014/01/20 PHP
php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
2016/07/12 PHP
微信公众号开发客服接口实例代码
2016/10/21 PHP
Jquery 组合form元素为json格式,asp.net反序列化
2009/07/09 Javascript
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
Javascript之旅 对象的原型链之由来
2010/08/25 Javascript
Javascript的严格模式strict mode详细介绍
2014/06/06 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
Bootstrap组合上、下拉框简单实现代码
2017/03/06 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
2017/05/10 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
vue axios用法教程详解
2017/07/23 Javascript
Vue作用域插槽slot-scope实例代码
2018/09/05 Javascript
在vue中获取微信支付code及code被占用问题的解决方法
2019/04/16 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
2019/09/27 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
2020/05/19 Javascript
js利用iframe实现选项卡效果
2020/08/09 Javascript
python基础教程之循环介绍
2014/08/29 Python
在Django的form中使用CSS进行设计的方法
2015/07/18 Python
Python的requests网络编程包使用教程
2016/07/11 Python
Python之Scrapy爬虫框架安装及简单使用详解
2017/12/22 Python
Python使用logging模块实现打印log到指定文件的方法
2018/09/05 Python
Django Haystack 全文检索与关键词高亮的实现
2020/02/17 Python
关于Django Models CharField 参数说明
2020/03/31 Python
分享一个python的aes加密代码
2020/12/22 Python
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
社会实践先进工作者事迹材料
2014/05/06 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
小学关爱留守儿童活动方案
2014/08/25 职场文书
个人求职意向书
2015/05/11 职场文书
2015年学校禁毒工作总结
2015/05/27 职场文书
学校安全管理制度
2015/08/06 职场文书
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle
MySQL分布式恢复进阶
2022/07/23 MySQL