详解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 相关文章推荐
在IE下获取object(ActiveX)的Param的代码
Sep 15 Javascript
ExtJS TabPanel beforeremove beforeclose使用说明
Mar 31 Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
Jan 13 Javascript
javascript解决IE6下hover问题的方法
Jul 28 Javascript
省市区三级联动下拉框菜单javascript版
Aug 11 Javascript
jQuery密码强度验证控件使用详解
Jan 05 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
Feb 20 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
Mar 10 Javascript
js分页之前端代码实现和请求处理
Aug 04 Javascript
ReactNative实现Toast的示例
Dec 31 Javascript
详解如何运行vue项目
Apr 15 Javascript
js实现移动端图片滑块验证功能
Sep 29 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 is_file()和is_dir()用于遍历目录时用法注意事项
2010/03/02 PHP
ThinkPHP实现ajax仿官网搜索功能实例
2014/12/02 PHP
PHP加密解密类实例分析
2015/04/20 PHP
PHP实现获取中英文首字母
2015/06/19 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
js获取url传值的方法
2015/12/18 Javascript
jQuery插件实现文字无缝向上滚动效果代码
2016/02/25 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
javascript实现复选框全选或反选
2017/02/04 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
jQuery实现的鼠标滚轮控制图片缩放功能实例
2017/10/14 jQuery
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
了解javascript中变量及函数的提升
2019/05/27 Javascript
vue input输入框关键字筛选检索列表数据展示
2020/10/26 Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
2019/11/05 Javascript
python中 chr unichr ord函数的实例详解
2017/08/06 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
python列表使用实现名字管理系统
2019/01/30 Python
python实现弹窗祝福效果
2019/04/07 Python
python基于TCP实现的文件下载器功能案例
2019/12/10 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
python基本算法之实现归并排序(Merge sort)
2020/09/01 Python
python实现AdaBoost算法的示例
2020/10/03 Python
python-图片流传输的思路及示例(url转换二维码)
2020/12/21 Python
web页面录屏实现
2019/02/12 HTML / CSS
新百伦折扣店:Joe’s New Balance Outlet
2016/08/20 全球购物
PHP高级工程师面试问题推荐
2013/01/18 面试题
大学军训感言200字
2014/02/26 职场文书
消防标语大全
2014/06/07 职场文书
党章培训心得体会
2014/09/04 职场文书
八荣八耻演讲稿
2014/09/15 职场文书
教师师德师风整改措施
2014/10/24 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
幼儿园大班教学反思
2016/03/02 职场文书
掌握这项技巧,一年阅读300本书不是梦
2019/09/12 职场文书