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知识库 -> Vue3打包构建从webpack改为vite -> 正文阅读

[JavaScript知识库]Vue3打包构建从webpack改为vite

前言

新创建的vue项目是用webpack创建打包的,想改成vite打包,顺便看看有哪些改变,以下是具体操作的内容。(靠提交记录记的,时间久远,可能有遗漏)

package.json

  1. 运行脚本

webpack
“scripts”: {
“serve”: “vue-cli-service serve”,
“build”: “vue-cli-service build”,
“lint”: “vue-cli-service lint”
}
vite
“scripts”: {
“build”: “vue-tsc --noEmit && vite build”,
“dev”: “vite”,
“preview”: “vite preview”
}

  1. 开发依赖减少了很多,因为vite内置了很多依赖,无需手动下载

webpack
“devDependencies”: {
“@typescript-eslint/eslint-plugin”: “^5.4.0”,
“@typescript-eslint/parser”: “^5.4.0”,
“@vue/cli-plugin-babel”: “~5.0.0”,
“@vue/cli-plugin-eslint”: “~5.0.0”,
“@vue/cli-plugin-router”: “~5.0.0”,
“@vue/cli-plugin-typescript”: “~5.0.0”,
“@vue/cli-service”: “~5.0.0”,
“@vue/eslint-config-typescript”: “^9.1.0”,
“babel-plugin-import”: “^1.13.5”,
“eslint”: “^7.32.0”,
“eslint-plugin-vue”: “^8.0.3”,
“postcss-pxtorem”: “^6.0.0”,
“sass”: “^1.32.7”,
“sass-loader”: “^12.0.0”,
“typescript”: “~4.5.5”,
“unplugin-vue-components”: “^0.20.1”,
“unplugin-vue-define-options”: “^0.6.2”
}
vite
“devDependencies”: {
“@types/node”: “^12.20.24”,
“@vitejs/plugin-vue”: “^3.0.3”,
“rollup-plugin-copy”: “^3.4.0”,
“typescript”: “^4.6.4”,
“unplugin-vue-components”: “^0.22.4”,
“vite”: “^3.0.7”,
“vue-tsc”: “^0.39.5”
}

  1. 完整版如下
{
  "name": "min-demo",
  "version": "0.0.1",
  "type": "module",
  "scripts": {
    "build": "vue-tsc --noEmit && vite build",
    "dev": "vite",
    "preview": "vite preview"
  },
  "dependencies": {
    "@tinymce/tinymce-vue": "^4.0.7",
    "amfe-flexible": "^2.2.1",
    "axios": "^0.27.2",
    "copy-webpack-plugin": "^11.0.0",
    "echarts": "^5.3.3",
    "element-plus": "^2.2.14",
    "min-comp": "^0.0.4",
    "mockjs": "^1.1.0",
    "particles.vue3": "^2.2.3",
    "pinia": "^2.0.20",
    "prismjs": "^1.28.0",
    "sass": "^1.54.5",
    "sass-loader": "^13.0.2",
    "three": "^0.143.0",
    "tsparticles": "^2.2.3",
    "vant": "^3.6.0",
    "vite-plugin-dts": "^1.4.1",
    "vite-plugin-md": "^0.20.2",
    "vue": "^3.2.37",
    "vue-router": "^4.1.3"
  },
  "devDependencies": {
    "@types/node": "^12.20.24",
    "@vitejs/plugin-vue": "^3.0.3",
    "rollup-plugin-copy": "^3.4.0",
    "typescript": "^4.6.4",
    "unplugin-vue-components": "^0.22.4",
    "vite": "^3.0.7",
    "vue-tsc": "^0.39.5"
  }
}

index.html

  1. index.html的位置需要移至和src同级
  2. 需要手动引入main.ts
    <script type="module" src="/src/main.ts"></script>
  3. 由于BASE_URL是webpack内置的全局环境变量,vite无法使用,vite的环境变量属性存放在import.meta.env中

vue.config.js 文件删掉创建vite.config.ts

//vite.config.ts
import { defineConfig } from "vite";
import vue from '@vitejs/plugin-vue';
import Components from 'unplugin-vue-components/vite';
import { VantResolver } from 'unplugin-vue-components/resolvers';
import path from 'path';

export default defineConfig({
    resolve: {
        alias: {
          "@": path.resolve(__dirname, "./src"),
        },
      },
      plugins: [
        vue(),
        Components({
          resolvers: [VantResolver()],
        }),
      ],
})

require 无法使用,require是webpack自带的,在vite里用import导入文件

//webpack
require("../mock");
//vite
import "../mock/index";

批量引入文件

//webpack
const files = require.context('.', true, /\.js$/);
//vite
const files = import.meta.glob("./*.js");

vite不支持动态加载文件,解决方案是加上注释

//webpack
component: () => import(`@/views/${folderUrl}/LayoutView.vue`)
//vite
component: () => import(/* @vite-ignore */`@/views/${folderUrl}/LayoutView.vue`)

新增vite-env.d.ts

declare module '*.vue' {
  import type { DefineComponent } from 'vue'
  const component: DefineComponent<{}, {}, any>
  export default component
}

新增tsconfig.node.json

{
  "compilerOptions": {
    "composite": true,
    "module": "ESNext",
    "moduleResolution": "Node",
    "allowSyntheticDefaultImports": true
  },
  "include": ["vite.config.ts"]
}
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:19:49  更:2022-11-05 00:20:44 
 
开发: 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年5日历 -2024/5/17 18:09:02-

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