vue-cli2.x升级到vue-cli4.x,vue脚手架升级

简介

1. 项目脚手架为vue-cli2.x版本,开发干起来不舒服(项目可能会挂掉,热更新....),打包包大难维护,总之不舒服
2. 虽然现在vue-cli5已出,也有vite(还没去了解)。但是呢,先升级成vue-cli4看看吧。

进入正题

  1. 第一步肯定是自己创建一个vue-cli4的项目 (vue create 项目名字),里面内容这些都不重要,因为后期会根据你自己项目package.json,重新弄
  2. 搬package.json到新项目的package.json
    刚初始化出来的一般都这样
{
  "name": "demo",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "core-js": "^3.6.5",
    "vue": "^2.6.11"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "~4.5.9",
    "@vue/cli-plugin-eslint": "~4.5.9",
    "@vue/cli-service": "~4.5.9",
    "babel-eslint": "^10.1.0",
    "eslint": "^6.7.2",
    "eslint-plugin-vue": "^6.2.2",
    "vue-template-compiler": "^2.6.11"
  },
  "eslintConfig": {
    "root": true,
    "env": {
      "node": true
    },
    "extends": [
      "plugin:vue/essential",
      "eslint:recommended"
    ],
    "parserOptions": {
      "parser": "babel-eslint"
    },
    "rules": {}
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not dead"
  ]
}

刚初始化完成的package.json,这里看看你们需不需要把script里面的启动配置和打包配置修改吧(此处启动项目为 npm run serve, 打包为npm run build)

最核心的是修改 package.json 中运行依赖 dependencies 和开发依赖 devDependencies
这里复制粘贴吧

注意
1. vue-cli4它内置了webpack,所以说老版本 dependencies 中看到webpack的不要移入新版本去(移过去目测要出问题,后期删掉的时候建议吧 node_modules 整个删掉重新来)
2. devDependencies 中含有 webpack、babel、postcss 剔除掉
3. devDependencies 含有 loader 的可以先剔除掉(保留 less-loader sass-loader css-loader)
4. 总而言之呢,跟着你项目需求删就完事。vue-cli2的配置文件中用了啥直接剔除掉就没事了。
5.devDependencies 其他的复制粘贴过去,其他地方就先不管了,有需求再改。
5. ......
  1. 处理 static 静态目录
    因为vue-cli2.x中有 static 静态文件夹,相当于vue3.x以上的 public 文件夹。但是咱们不想把以前的东西自己手动扔到 public 文件夹里面去。于是咱们沿用以前的 static 文件夹 这个是需要加配置的(在vue.config.js中配置就行了)使用 CopyWebpackPlugin 这个插件(webpack的)
const CopyWebpackPlugin = require('copy-webpack-plugin')
module.exports = {
  configureWebpack: {
    plugins: [
      new CopyWebpackPlugin([{
        from: './static',
        to: 'static'
      }])
    ],
  },
}
  1. 创建项目全局变量文件(与vue.config.js 、package.json 同级 )
    文件名(.env.development,.env.production)
.env.development
VUE_APP_ENV = 'development'
VUE_APP_BASE_API = '/'
.env.production
VUE_APP_ENV = 'production'
VUE_APP_BASE_API = '/'
  1. 来一份 vue.config.js 配置表
const CopyWebpackPlugin = require('copy-webpack-plugin')
const path = require('path')
module.exports = {
  // 打包生成的文件夹名字
  outputDir: 'dist',
  // 设置放置打包生成的静态资源 (js、css、img、fonts) 的目录。 该目录是相对于 outputDir 。
  assetsDir: 'public',
  filenameHashing: true,
  pages: {
    index: {
      // entry for the pages
      entry: 'src/main.js',
      // the source template
      template: 'public/index.html',
      // output as dist/index.html
      filename: 'index.html',
      // when using title option,
      // template title tag needs to be <title><%= htmlWebpackPlugin.options.title %></title>
      title: 'titie',
      // chunks to include on this pages, by default includes
      // extracted common chunks and vendor chunks.
      chunks: ['chunk-vendors', 'chunk-common', 'index']
    }
  },
  // eslint 保存的时候是否检查
  lintOnSave: process.env.VUE_APP_ENV === 'development',
  // 是否使用包含运行时编译器的Vue核心的构建
  runtimeCompiler: false,
  // 生产环境 sourceMap
  productionSourceMap: false,
  // 构建时开启多进程处理 babel 编译
  parallel: require('os').cpus().length > 1,
  // 合并 webpack 配置
  configureWebpack: {
    plugins: [
      new CopyWebpackPlugin([{
        from: './static',
        to: 'static'
      }])
    ],
  },
  // 修改 webapck 配置
  chainWebpack: (config) => {
    // 因为是多页面,所以取消 chunks,每个页面只对应一个单独的 JS / CSS
    config.optimization
      .splitChunks({
        cacheGroups: {}
      })
    // 配置 全局样式文件的地方- 需下载依赖
    // const types = ["vue-modules", "vue", "normal-modules", "normal"];
    // types.forEach((type) =>
    //   addStyleResource(config.module.rule("less").oneOf(type))
    // );
    // function addStyleResource(rule) {
    //    rule
    //      .use("style-resource")
    //      .loader("style-resources-loader")
    //      .options({
    //        patterns: [path.resolve(__dirname, "./src/styles/anHui-new/common.less")],
    //      });
    //  }
    // 'node_modules' 不参与 eslint 检测
    config.module
      .rule('eslint')
      .exclude
      .add('/node_modules')
      .end()
  },

  // 代理配置地方
  devServer: {
  	// 构建时是否自动打开浏览器
    open: true,
    port: 7315,
    overlay: {
      warnings: false,
      errors: true
    },
    proxy: {
      [process.env.VUE_APP_BASE_API]: {
        target: 'http://10.1.12.51:7356', // 开发环境
        changeOrigin: true, // 是否跨域
        secure: false,
         // 路径重定向 - 服务器 - 在 .env.xxx文件更改
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: [process.env.VUE_APP_BASE_API]
        }
      }
    }
  },
  // 第三方插件配置
  pluginOptions: {}
}
  1. 优点肯定是有的,比如说 之前打包需要80多秒以上现在20s以上,之前打包出来25Mb左右现在10Mb左右…优点多多不纠结了

vue-cli2.x升级为vue-cli4.x荆棘之路记录方便以后重新走

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值