IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue-cli2.x升级到vue-cli4.x,vue脚手架升级 -> 正文阅读

[JavaScript知识库]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荆棘之路记录方便以后重新走

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 12:31:32  更:2022-05-09 12:35:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:56:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码