iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >VueCli项目重构为Vite的方法步骤
  • 832
分享到

VueCli项目重构为Vite的方法步骤

VueCli项目重构为ViteVueCli项目重构 2023-05-16 17:05:52 832人浏览 泡泡鱼
摘要

目录更新依赖与 package.JSON配置 Vite全局替换 Env 变量与 require调整 ESLint 配置调整 index.htmlSVG 支持总结参考我们知道 VueC

我们知道 VueCli 使用的是 webpack 打包工具,而 Vite 是基于 ESM 的打包工具,所以我们可以使用 Vite 来替换 VueCli,来提升我们的开发体验。

更新依赖与 package.json

我们先将项目中的 VueCli 相关依赖删除,然后安装 Vite 相关依赖。

::: tip 包管理工具我们使用 pnpm,如果你使用的是 npmyarn,请自行替换。 :::

  • 删除 VueCli 相关依赖
pnpm remove @vue/cli-plugin-babel @vue/cli-plugin-eslint @vue/cli-service
  • 安装 Vite 相关依赖

::: warning 注意 如果你用的是 vue2.6, 请安装 vite-plugin-vue2, 并且不需要 jsx 支持 :::

pnpm add -D vite @vitejs/plugin-vue @vitejs/plugin-vue2 @vitejs/plugin-vue2-jsx
  • 同时我们可以移除 babel 相关依赖
pnpm remove -D babel-plugin-dynamic-import-node babel-eslint
  • 修改 scripts

修改 package.json 中的 scripts

{
  "scripts": {
    "dev": "vite --host",
    "build:prod": "vite build",
    "build:stage": "vite build --mode staging"
  }
}

配置 Vite

  • 创建 vite.config.js,并添加基本配置
import { defineConfig, loadEnv } from 'vite';
// 如果使用的是 vue2.6, 请使用 vite-plugin-vue2
// import { createVuePlugin as vue } from 'vite-plugin-vue2';
import vue from '@vitejs/plugin-vue2';
import { resolve } from 'path';
import rollupNodePolyFill from 'rollup-plugin-node-polyfills';
import { dataToEsm } from '@rollup/pluginutils';
import vueJsx from '@vitejs/plugin-vue2-jsx';

export default ({ mode }) => {
  process.env = { ...process.env, ...loadEnv(mode, process.cwd(), '') };

  return defineConfig({
    plugins: [
      // vue2.6
      // vue({ jsx: true }),
      // vue2.7
      vue(),
      vueJsx(),
    ],
    server: {
      port: 75,
      proxy: {
        [process.env.VITE_APP_BASE_api]: {
          target: process.env.VITE_APP_PROXY_API,
          changeOrigin: true,
          rewrite: (path) => path.replace(new RegExp(`^${process.env.VITE_APP_BASE_API}`), ''),
        },
      },
    },
    resolve: {
      alias: {
        '@': resolve('src'),
      },
      extensions: ['.js', '.vue', '.json'],
    },
  });
};
  • 如果你的项目中使用了 node 的一些模块,需要在 resolve.alias 中添加对应的 polyfill

::: tip 提示 需要添加 rollup-plugin-node-polyfills 依赖 :::

defineConfig({
  // ...
  resolve: {
    alias: {
      '@': resolve('src'),
      // 如果你的项目中使用了node的一些模块,需要在这里添加对应的polyfill,如没有配置.js的extensions,需要在末尾添加.js
      path: 'rollup-plugin-node-polyfills/polyfills/path',
  }
})
  • 如果你的项目需要使用 build 的配置,可以参考如下配置
defineConfig({
  // ...
  build: {
    rollupOptions: {
      output: {
        chunkFileNames: 'js/[name]-[hash].js',
        entryFileNames: 'js/[name]-[hash].js',
        assetFileNames: 'assets/[ext]/[name]-[hash][extname]',
        // 分离依赖包
        manualChunks: {
          vue: ['vue'],
          echarts: ['echarts'],
          'element-ui': ['element-ui'],
        },
      },
    },
  },
});
  • 移除 vue.config.js
  • 若你的项目中使用了 jsx,请将 '.js' 文件修改为 '.jsx'

全局替换 Env 变量与 require

  • 将所有的 process.env 替换为 import.meta.env,如:
// 替换前
const uploadFileUrl = process.env.VUE_APP_BASE_API + '/upload';
// 替换后
const uploadFileUrl = import.meta.env.VITE_APP_BASE_API + '/upload';

::: tip 参考正则 process\.env\.VUE_APP_ replace import.meta.env.VITE_APP_ :::

::: danger 注意 请勿将 vite.config.js 中的 process.env 替换为 import.meta.env :::

  • 将所有直接导入的 require 替换为 import,如:
// 替换前
const { version } = require('../../package.json');
// 替换后
import { version } from '../../package.json';

::: tip 参考正则 const\s+\{(.+?)\}\s+=\s+require\((.+?)\); replace import {$1} from $2; :::

  • 移除动态导入的 require.context,如:
// 替换前
const svgIcons = require.context('@/assets/icons/svg', false, /\.vue$/);
// 替换后
const svgIcons = import.meta.globEager('@/assets/icons/svg'); 
  • 动态导入的 Vue 路由组件需要调整为 import(),如:
// 替换前
route.component = () => require([`@/views/${route.component}`]);
// 替换后

// 动态导入
const views = import.meta.glob('@/views**.vue');
route.component = views[`@/views/${route.component}.vue`];

// 确定文件路径的动态导入
// 替换前
route.component = () => require('@/views/index/index');
// 替换后
route.component = () => import('@/views/index/index.vue');

调整 ESLint 配置

移除 babel-eslint parser

// .eslintrc.js
module.exports = {
  // ...
  // 移除
  // parser: 'babel-eslint',
  // ...
};

调整 index.html

移动 public/index.htmlindex.html,并添加 JavaScript 模块 的引入方式

<!-- ... -->
<script type="module" src="/src/main.js"></script>
<!-- ... -->

::: tip 提示 <script>标签一般添加在 </body> 前 :::

SVG 支持

  • 安装依赖
pnpm add -D vite-plugin-svg-icons
  • 修改 vite.config.js,参考配置如下:
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons';

defineConfig({
  // ...
  plugins: [
    // ...
    createSvgIconsPlugin({
      // 图标文件夹中,所有的svg文件将被转换为svg精灵
      iconDirs: [resolve(process.cwd(), 'src/assets/icons/svg')],
      // 指定symbolId格式
      symbolId: 'icon-[dir]-[name]',
    }),
  ],
});
  • 添加虚拟模块至入口文件,如:
// src/main.js
// ...
import 'virtual:svg-icons-reGISter';
// ...
  • 添加 SvgIcon/index.vue 组件
<template>
  <div v-if="isExternal" :style="styleExternalIcon" class="svg-external-icon svg-icon" v-on="$listeners" />
  <svg v-else :class="svGClass" aria-hidden="true" v-on="$listeners">
    <use :xlink:href="iconName" rel="external nofollow"  />
  </svg>
</template>

<script>
import { isExternal } from '@/utils/validate';

export default {
  name: 'SvgIcon',
  props: {
    iconClass: {
      type: String,
      required: true,
    },
    className: {
      type: String,
      default: '',
    },
  },
  computed: {
    isExternal() {
      return isExternal(this.iconClass);
    },
    iconName() {
      return `#icon-${this.iconClass}`;
    },
    svgClass() {
      if (this.className) {
        return 'svg-icon ' + this.className;
      } else {
        return 'svg-icon';
      }
    },
    styleExternalIcon() {
      return {
        mask: `url(${this.iconClass}) no-repeat 50% 50%`,
        '-WEBkit-mask': `url(${this.iconClass}) no-repeat 50% 50%`,
      };
    },
  },
};
</script>

<style scoped>
.svg-icon {
  width: 1em;
  height: 1em;
  vertical-align: -0.15em;
  fill: currentColor;
  overflow: hidden;
}

.svg-external-icon {
  background-color: currentColor;
  mask-size: cover !important;
  display: inline-block;
}
</style>

总结

至此,我们已经完成了 vue-cli 项目的迁移,接下来我们可以使用 vite 的各种优势了。

如果遇到构建产物无法正常使用的情况,请在你的动态路由中导入 import.meta.glob

参考

  • Vite
  • Webpack to Vite

到此这篇关于Vue Cli项目重构为Vite的方法步骤的文章就介绍到这了,更多相关Vue Cli项目重构为Vite内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: VueCli项目重构为Vite的方法步骤

本文链接: https://www.lsjlt.com/news/210382.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • VueCli项目重构为Vite的方法步骤
    目录更新依赖与 package.json配置 Vite全局替换 Env 变量与 require调整 ESLint 配置调整 index.htmlSVG 支持总结参考我们知道 VueC...
    99+
    2023-05-16
    Vue Cli项目重构为Vite Vue Cli项目重构
  • Vite搭建React项目的方法步骤
    目录前言创建一个 Vite 项目改造工程目录约定其他配置前言 日常放鸽,火钳刘明 这是一个基于 vite 搭建的 React 的项目,开发体验非常棒。 创建一个 Vite 项目 ...
    99+
    2024-04-02
  • vite+vue3+element-plus项目搭建的方法步骤
    使用vite搭建vue3项目 通过在终端中运行以下命令,可以使用 Vite 快速构建 Vue 项目。 $ npm init vite-app <project-name&...
    99+
    2024-04-02
  • Vite创建项目的实现步骤
    目录前言yarn create 做了什么源码解析项目依赖模版配置工具函数copycopyDiremptyDir核心函数命令行交互并创建文件夹写入文件小结前言 随着 Vite2 的发...
    99+
    2024-04-02
  • 使用Vite+Vue3+Vant全家桶快速构建项目步骤详解
    目录引言一、vue3全家桶模板介绍1.版本依赖2.全家桶内置集成二、安装 tive-cli 命令行工具三、生成项目四、项目体验引言 随着Vue3 和 Vite 版本的不断更新完善,开...
    99+
    2024-04-02
  • 使用Vite搭建vue3+TS项目的实现步骤
    目录vite简介初始化项目修改vite.config.ts安装ts依赖和ESLint安装Axios配置跨域安装Lessvite简介 vite 是一个基于 Vue3 单文件组件的非打包...
    99+
    2023-01-11
    Vite搭建vue3+TS项目
  • uniapp项目打包为桌面应用的方法步骤
    安装electron cnpm install electron -g 安装electron-packager cnpm install electron-packager...
    99+
    2024-04-02
  • vue项目配置env的方法步骤
    目录vue中利用.env文件存储全局环境变量,以及配置vue启动和打包命令配置.env文件获取.env中的全局变量实际用处总结vue中利用.env文件存储全局环境变量,以及配置vue...
    99+
    2023-05-16
    vue配置文件.env vue项目配置env vue的env配置
  • SpringBoot项目集成FTP的方法步骤
    目录写在前面FTP相关软件安装开始集成引入相关jar包引入FTPUtils.java和FTPHelper.java如何使用写在前面 FTP是一个文件传输协议,被开发人员广泛用于在互...
    99+
    2024-04-02
  • electron打包vue项目的方法步骤
    目录创建项目添加electron-builderelectron下载失败窗体运行打包exe白屏创建项目 点击这里 添加electron-builder 1、在项目目录下运行命令:vu...
    99+
    2024-04-02
  • java项目导出为.exe执行文件的方法步骤
    将java项目导出为.exe执行文件需要借助于第三方软件,本文我们选择jar2exe软件。 第一步:先安装jar2exe软件,安装直接选择默认步骤即可。 第二步:需要将项目导出为ja...
    99+
    2024-04-02
  • javaweb 项目初始配置的方法步骤
    目录项目初始流程:数据库的建立于一开始的分层:db.properties:首先创建数据库连接的工具类:DBUtil1:得到配置文件对象:2:获取数据库连接:3:关闭资源:DBUtil...
    99+
    2024-04-02
  • IDEA+Maven搭建JavaWeb项目的方法步骤
    目录前言1. 项目搭建2. 配置项目添加web部署的插件3. 项目运行使用Tomact插件运行项目4. 注意事项前言 本章节主要内容是描述如何使用maven构建javaweb项目 M...
    99+
    2024-04-02
  • IDEA创建SpringBoot的maven项目的方法步骤
    记录IDEA编程工具创建SpringBoot的maven项目过程: 新建项目 选择maven项目及JDK,点击下一步: 选择好项目路径,输入项目名称,点击完成就可以啦: 创建完...
    99+
    2024-04-02
  • springboot项目部署到k8s上的方法步骤
    目录springboot部署到k8s步骤创建secret创建secret创建deployment的yaml文件创建deployment创建service, nodePortsprin...
    99+
    2023-05-19
    springboot部署到k8s
  • React项目如何使用Element的方法步骤
    初次在react项目中使用element框架,碰到了一些很简单的问题,但是卡了很久才解决,写篇博客记录一下。 1、安装: 在项目目录下下载: npm i element-rea...
    99+
    2024-04-02
  • 使用jenkins部署springboot项目的方法步骤
    1.准备工作 1、JDK安装 2、Maven安装 3、Git安装 4、jenkins安装 以上软件安装成功后进入jenkins进行相关配置。 如果需要通过SSH进行远程发布项目,je...
    99+
    2024-04-02
  • Docker搭建部署Node项目的方法步骤
    目录什么是Docker客户端DockerDocker基本操作镜像名称拉取镜像其他操作DockerfileDocker-compose构建nginx-node-postgres项目前段...
    99+
    2024-04-02
  • 详解Vue-cli来构建Vue项目的步骤
    首先需要安装Vue-cli: npm install -g vue-cli 全局先安装Vue-cli,安装好了Vue-cli。就可以使用它来构建项目 vue init w...
    99+
    2024-04-02
  • vue项目打包发布上线的方法步骤
    目录一、开发环境到生产环境的转变二、设置统一的请求路径 三、运行打包命令vue项目开发完成后,我们需要将项目打包上线,同时我们希望可以在本地预览生产环境项目 (以vue-c...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作