vue2将webpack改为vite

1、修改环境变量:之前vue-cli使用的是VUE_APP开头的环境变量,vite使用的是VITE_开头的环境变量,所以需要修改环境变量。

2、修改环境变量引用:vue-cli使用的是process.env而vite使用的是import.meta.env。

3、index.html文件改动:

1、vite默认会从根目录找index.html文件,所以确保index.html在根目录下。

2、如果有使用HtmlWebpackPlugin插件,在vite中需要使用vite-plugin-html插件。

4、修改page.json文件:

1、运行命令"dev": "vite", 打包命令"build": "vite build"

2、删除core.js包、删除 "@vue/cli-*"相关包、删除sass-loader包、删除babel-*相关包

3、安装 "@vitejs/plugin-vue": "^1.6.1"、"vite": "^2.9.18"、"vite-plugin-vue2": "^1.9.0",

5、删除魔法注解:/* webpackChunkName: "XXXX" */,vite中魔法注释不生效,也可以不删除

6、新增vite.config.js文件:基础配置:

javascript 复制代码
import { defineConfig } from 'vite'
import { createVuePlugin as vue } from "vite-plugin-vue2" // 重要-vue2需要使用

const path = require("path")
export default defineConfig({
  plugins: [vue()],
  resolve: {
    alias: {
      "@": path.resolve(__dirname, "./src"),
    },
    extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'],
  },
  esbuild: {
    // 此配置是为了在vue中使用jsx
    jsxFactory: "h",
    jsxFragment: "Fragment",
    jsxInject: "import { h } from 'vue';",
  }
})

7、删除babel.config.js

8、jsx使用需要在script标签中添加lang="jsx",如:<script lang="jsx">

9、批量引入文件:webpack中使用require.context()批量引入文件,vite中使用import.meta.glob()批量引入文件。

10、全局scss文件:在vite.config.js中配置scss全局样式,且不能再在vue文件中使用import引入,还没找到怎么在template中使用全局样式的方法,如:

javascript 复制代码
css: {
        preprocessorOptions: {
            scss: {
                javascriptEnabled: true,
                additionalData: `
                    @import '文件路径';
                    @import '文件路径';
                `
            }
        }
}

11、将使用的node_modules里使用的包单独打包出来:

javascript 复制代码
build: {
    "minify":false,
    "rollupOptions":{
      "output":{
        "manualChunks":(id)=>{
          if(id.includes('node_modules')){
            return 'vendor';
          }
        }
      }
    }
  }

参考文档:https://vueschool.io/articles/vuejs-tutorials/how-to-migrate-from-vue-cli-to-vite/

相关推荐
IT_陈寒3 小时前
Java中equals方法比了个寂寞?原来这才是正确的重写姿势
前端·人工智能·后端
默_笙3 小时前
🚓 分诊台与拆题术:让 RAG 学会判断和规划
前端·javascript
CopyCode3 小时前
用 AI 迁项目有多爽?我把 Webpack 迁 Vite 的全过程记下来了
前端·架构
去伪存真3 小时前
Electron 自动化发布指南:GitHub Actions 跨平台打包全纪录
前端·electron
计算机魔术师3 小时前
OpenAI智能体失控闯进美国政府网站,53张用户图片外泄背后
前端
颜进强3 小时前
14 · NestJS ExecutionContext 执行上下文:守卫、拦截器、过滤器拿到的"同一个 context",为什么能力不一样?
前端·后端·ai编程
程序员Flycan3 小时前
🚀 跨域终结者:前端代理服务器(Proxy)原理解析与配置总结
前端
怕浪猫3 小时前
顶级模型一句话,AI 写出了能玩的 QQ飞车
前端·面试·github
huakoh3 小时前
MCP 报错分不清?先看响应里是 result 还是 error
前端
呃呃呃呃ex3 小时前
10. 现代前端工程化:ES6 React 项目实战与原理解析
前端·javascript