当前位置: 首页 > article >正文

vue2 升级为 vite 打包

VUE2 中使用 Webpack 打包、开发,每次打包时间太久,尤其是在开发的过程中,本文记录一下 VUE2 升级Vite 步骤。
在这里插入图片描述

安装 Vue2 Vite 依赖

dev 依赖

@vitejs/plugin-vue2": "^2.3.3
@vitejs/plugin-vue2-jsx": "^1.1.1
vite": "^5.0.0
#选装,自动添加后缀
vite-plugin-resolve": "^2.5.2

npm 脚本

  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "serve": "vite preview"
  },

vite.config.js

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue2';
import vue2Jsx from '@vitejs/plugin-vue2-jsx';

import path from 'path';

export default defineConfig({
  plugins: [vue(), vue2Jsx(),
    

    {
      name: 'resolve-file-extension',
      resolveId(source, importer) {
        // Skip absolute paths or non-relative imports
        if (!importer || !source.startsWith('.') || source.includes('?')) {
          return null;
        }

        const extensions = ['.vue', '.js', '.ts', '.jsx', '.tsx']; // Add supported extensions
        for (const ext of extensions) {
          try {
            const resolvedPath = require.resolve(source + ext, { paths: [importer] });
            return resolvedPath;
          } catch (e) {
            continue;
          }
        }
        return null;
      },
    },
  ],
    resolve: {
      extensions: ['.vue', '.js', '.jsx', '.ts', '.tsx'],
    alias: {
      '@': path.resolve(__dirname, './src'), // Alias `@` to `src` directory
    },
    },
   
  server: {
    host: '0.0.0.0',
    port: 8080,
    open: true,
    proxy: {
      '/api': {
        target: 'http://localhost:8090/', // Target server for `/api` requests
        rewrite: (path) => path.replace(/^\/api/, '/'), // Remove `/api` prefix
        changeOrigin: true, // Handle CORS
      },
    },
    },
    css: {
        
    preprocessorOptions: {
      less: {
        modifyVars: {
          // Uncomment and define your custom LESS variables here
          // "primary-color": "#377DF6",
          // "link-color": "#377DF6",
        },
        javascriptEnabled: true, // Enable JavaScript in LESS
      },
    },
  },
  build: {
    sourcemap: process.env.NODE_ENV === 'development', // Source maps for development
  },
});

index.html

将 Index.html 从 public 移动到根目录下,与 webpack 相关的去掉。

<!DOCTYPE html>
<html lang="">

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width,initial-scale=1.0">
  <link rel="icon" href="./favicon.ico">
  <title>TestTTT</title>
</head>

<body>
  <noscript>
    <strong>We're sorry,work properly without JavaScript enabled.
        Please enable it to continue.</strong>
  </noscript>
  <div id="app"></div>
  <script type="module" src="/src/main.js"></script>
  <!-- built files will be auto injected -->
</body>

</html>

jsx

如果你的项目中使用了 jsx,需要在 script 中制定 lang="jsx"

<script lang="jsx">
export default {
  props:["title", "open", "label"],
  data() {
    return {
    }
  },
}
</script>

总结

Vue2 升级 Vite 比较顺利,几点要注意的:

  • 用 Vite 5.0,jsx 插件只支持到 Vite 5.0
  • Webpack 语法要移除
  • 其他遇到问题,让豆包把代码修改为 Vite 方式即可

http://www.kler.cn/a/458702.html

相关文章:

  • HTML5 标签输入框(Tag Input)详解
  • 微信小程序:定义页面标题,动态设置页面标题,json
  • DeepSeek V3“报错家门”:我是ChatGPT
  • 获取 Astro Bot AI 语音来增强您的游戏体验!
  • 【密码学】基于 fastcoll 实现 MD5 碰撞快速生成(MD5碰撞)
  • SAP学习笔记 - 豆知识14 - Msg 番号 M7562 - 取引Type WL 对应的番号範囲中不存在2025年度 OMBT
  • Unity-Editor扩展显示文件夹大小修复版 FileCapacity.cs
  • HarmonyOS Next“说书人”项目 单机版 实践案例
  • AI与云计算:天作之合
  • 如何高效学习PHP框架源码
  • (长期更新)《零基础入门 ArcGIS(ArcMap) 》实验四----城市用地适宜性评价(超超超详细!!!)
  • unity使用代码在动画片段中添加event
  • 汽车网络安全基线安全研究报告
  • vue.js普通组件的注册-局部注册
  • C11.【C++ Cont】遍历字符串的两种方式和strstr函数
  • 华为OD E卷(100分)37-考勤信息
  • 基于 Paimon x Spark 采集分析半结构化 JSON 的优化实践
  • Spring Retry + Redis Watch实现高并发乐观锁
  • UI页面布局分析(5)- 评分弹窗的实现
  • 【PCIe 总线及设备入门学习专栏 5.1 -- PCIe 引脚 PRSNT 与热插拔】
  • Edge Scdn是用来干什么的?
  • 用户界面的UML建模05
  • element-plus在Vue3中开发相关知识
  • AI文献阅读ChatDOC 、ChatPDF 哪个好?
  • 如何在Linux上配置SSH密钥以实现免密登录
  • PostgreSQL 初始化配置设置