第3章 配置 Vite

1 基本配置

Vite 的配置文件 vite.config.js 是基于 JavaScript 或 TypeScript 的文件,可以使用 ES 模块语法进行导出。Vite 通过这个配置文件来调整各种构建和开发的选项。

1.1 创建配置文件

在项目根目录创建 vite.config.js 文件:

// vite.config.js
import { defineConfig } from 'vite'export default defineConfig({// 基本配置项在这里
})

1.2 常用基本配置

root

指定项目的根目录(默认是当前工作目录):

export default defineConfig({root: 'src'
})
base

设置项目的基本公共路径(默认是 /)。当你需要将项目部署在非根目录时,调整这个参数:

export default defineConfig({base: '/my-app/'
})
publicDir

指定静态资源目录(默认是 public)。在这个目录中的文件会被复制到输出目录的根部:

export default defineConfig({publicDir: 'static'
})
cacheDir

指定缓存目录(默认是 node_modules/.vite),用于存储预构建的依赖:

export default defineConfig({cacheDir: '.vite-cache'
})

2 环境变量和模式

Vite 支持基于文件的环境变量配置,你可以根据不同的构建模式(如开发模式和生产模式)使用不同的环境变量。

2.1 环境变量文件

你可以在项目根目录中创建 .env 文件来定义环境变量:

# .env
VITE_APP_TITLE=My Vite App

对于特定模式的环境变量文件,可以命名为 .env.[mode]

# .env.production
VITE_APP_TITLE=My Vite App (Production)

2.2 使用环境变量

在代码中,通过 import.meta.env 访问环境变量:

console.log(import.meta.env.VITE_APP_TITLE)

2.3 环境变量的替换

Vite 会在构建时替换 import.meta.env 中的变量:

const apiUrl = import.meta.env.VITE_API_URL
fetch(apiUrl + '/endpoint').then(response => response.json()).then(data => console.log(data))

3 配置文件解析 (vite.config.js)

3.1defineConfig

defineConfig 是 Vite 提供的一个辅助函数,用于提供类型提示和自动完成:

import { defineConfig } from 'vite'export default defineConfig({// 配置项在这里
})

3.2 常见配置项

server

配置开发服务器相关的选项:

export default defineConfig({server: {host: '0.0.0.0', // 指定服务器主机名port: 3000,      // 指定服务器端口open: true,      // 自动打开浏览器proxy: {         // 配置代理'/api': {target: 'http://localhost:4000',changeOrigin: true,rewrite: path => path.replace(/^\/api/, '')}}}
})
build

配置构建选项:

export default defineConfig({build: {outDir: 'dist',        // 输出目录assetsDir: 'assets',   // 静态资源目录sourcemap: true,       // 生成 sourcemap 文件rollupOptions: {       // 自定义 Rollup 选项output: {manualChunks: {vendor: ['vue']}}}}
})
resolve

配置模块解析选项:

export default defineConfig({resolve: {alias: {'@': '/src' // 路径别名},extensions: ['.js', '.vue', '.json'] // 自动解析的扩展名}
})
css

配置 CSS 相关选项:

export default defineConfig({css: {preprocessorOptions: {scss: {additionalData: `@import "@/styles/variables.scss";`}},modules: {scopeBehaviour: 'local', // 配置 CSS 模块行为generateScopedName: '[name]__[local]___[hash:base64:5]'}}
})
plugins

配置 Vite 插件:

import vue from '@vitejs/plugin-vue'export default defineConfig({plugins: [vue()]
})

optimizeDeps

optimizeDeps 选项用于配置依赖预构建的行为。Vite 会扫描你的项目并预构建依赖,以提高开发服务器的启动速度。

export default defineConfig({optimizeDeps: {entries: ['index.html'], // 手动指定要扫描的入口文件exclude: ['your-package'], // 排除不需要预构建的依赖include: ['another-package'] // 强制预构建某些依赖}
})

json

json 选项用于配置 JSON 文件的处理方式:

export default defineConfig({json: {namedExports: true, // 支持从 JSON 文件导入具名导出stringify: false    // 禁用自动 JSON.stringify 转换}
})

esbuild

esbuild 选项用于配置内部使用的 esbuild 编译器:

export default defineConfig({esbuild: {jsxFactory: 'h', // 自定义 JSX 工厂函数jsxFragment: 'Fragment', // 自定义 JSX 片段minify: true // 启用代码压缩}
})

logLevel

logLevel 选项用于设置日志级别:

export default defineConfig({logLevel: 'info' // 可选值:'info', 'warn', 'error', 'silent'
})

define

define 选项用于定义全局常量,这些常量会在打包时进行替换:

export default defineConfig({define: {__VERSION__: JSON.stringify('1.0.0')}
})

ssr

ssr 选项用于配置服务器端渲染(SSR)相关的选项:

export default defineConfig({ssr: {external: ['react', 'react-dom'], // 指定外部化依赖noExternal: ['your-package'] // 禁止外部化某些依赖}
})

4 命令行接口 (CLI)

Vite 提供了一些命令行工具来帮助开发和构建项目。

4.1 启动开发服务器

vite

这将启动一个开发服务器,并打开一个浏览器窗口,你可以在其中查看应用。

或者使用 npm script:

npm run dev

4.2 构建生产版本

vite build

这将构建生产版本的应用,输出到 dist 目录。

或者使用 npm script:

npm run build

4.3 预览构建结果

vite preview

这将启动一个静态文件服务器,用于预览构建结果。

或者使用 npm script:

npm run serve

4.4 CLI 选项

可以通过命令行选项覆盖配置文件中的选项。例如,指定配置文件:

vite --config ./config/vite.config.js

或者指定环境模式:

vite --mode production

4.5 命令行全局安装

你可以将 Vite 安装为全局命令,以便在任何地方使用:

npm install -g vite

安装后,你可以使用 vite 命令来创建、开发和构建项目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/41499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RNN、LSTM与GRU循环神经网络的深度探索与实战

循环神经网络RNN、LSTM、GRU 一、引言1.1 序列数据的迷宫探索者:循环神经网络(RNN)概览1.2 深度探索的阶梯:LSTM与GRU的崛起1.3 撰写本博客的目的与意义 二、循环神经网络(RNN)基础2.1 定义与原理2.1.1 RNN…

【Python】组合数据类型:序列,列表,元组,字典,集合

个人主页:【😊个人主页】 系列专栏:【❤️Python】 文章目录 前言组合数据类型序列类型序列常见的操作符列表列表操作len()append()insert()remove()index()sort()reverse()count() 元组三种序列类型的区别 集合类型四种操作符集合setfrozens…

【CSS in Depth 2精译】2.5 无单位的数值与行高

当前内容所在位置 第一章 层叠、优先级与继承第二章 相对单位 2.1 相对单位的威力2.2 em 与 rem2.3 告别像素思维2.4 视口的相对单位2.5 无单位的数值与行高 ✔️2.6 自定义属性2.7 本章小结 2.5 无单位的数值与行高 有些属性允许使用无单位的数值(unitless value…

【数据结构与算法】快速排序挖坑法

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法》 期待您的关注 ​

前端面试题16(跨域问题)

跨域问题源于浏览器的同源策略(Same-origin policy),这一策略限制了来自不同源的“写”操作(比如更新、删除数据等),同时也限制了读操作。当一个网页尝试请求与自身来源不同的资源时,浏览器会阻…

网络配置文件中type

在网络配置文件中,type是一个参数,用于指定网络接口的类型。它指定了网络接口所使用的协议或技术。 以下是一些常见的type参数值: “ethernet”:表示以太网接口,用于连接以太网设备,如有线网卡。 “wifi”…

Python实现ABC人工蜂群优化算法优化随机森林回归模型(RandomForestRegressor算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 人工蜂群算法(Artificial Bee Colony, ABC)是由Karaboga于2005年提出的一种新颖的基于群智能的全局优化…

PD虚拟机不能复制Mac的文件怎么回事 PD虚拟机不能复制Mac的文件怎么办 Parallels Desktop怎么用

PD虚拟机不仅能提供跨系统协作的服务,还能进行虚拟机系统与原生系统间的文件共享、文本复制、文件复制等操作,让系统间的资源可以科学利用。但在实际操作过程中,PD虚拟机不能复制Mac的文件怎么回事?PD虚拟机不能复制Mac的文件怎么…

linux centos7.9 安装mysql5.7;root设置客户端登录、配置并发、表名大小写敏感等

查看centos版本 cat /etc/centos-releasecentos版本为7.9 查看是否已安装mariadb,安装了需要先删除 1.查看是否安装了mariadb和mysql,安装了需要先删除 mariadb是mysql的一个分支,但要安装mysql需要删除它 执行rpm -qa|grep mariadb,查看mariadb情况 查找到有就删除 执行…

中小学白名单编程竞赛:精英竞技场的深度解析

目录 1. 引言2. 特点3. 为什么参加白名单编程竞赛4. 具体竞赛介绍4.1 全国中小学信息技术创新与实践大赛(NOC大赛)4.1.1 面向对象4.1.2 考试内容4.1.3 赛事特点4.1.4 报名时间4.1.5 含金量4.1.6 优缺点4.1.7 赛事流程4.2 蓝桥杯大赛4.2.1 面向对象4.2.2 考试内容4.2.3 赛事特…

Day59 动态规划part12

LC115不同的子序列(未掌握) 递推公式与LC392类似,但是初始化略有不同 LC392的dp数组含义为相同字符个数而本体的dp数组含义为出现的次数,因此dp[i][0]1 两种情况 s[i-1]t[j-1] dp[i][j] dp[i-1][j-1]dp[i][j] dp[i-1][j] s[…

Kubernetes集群性能测试之kubemark集群搭建

Kubernetes集群性能测试之kubemark集群搭建 Kubemark是K8s官方提供的一个对K8s集群进行性能测试的工具。它可以模拟出一个K8s cluster(Kubemark cluster),不受资源限制,从而能够测试的集群规模比真实集群大的多。这个cluster中ma…

运维锅总详解系统启动流程

本文详细介绍Linux及Windows系统启动流程,并分析了它们启动流程的异同以及造成这种异同的原因。希望本文对您理解系统的基本启动流程有所帮助! 一、Linux系统启动流程 Linux 系统的启动流程可以分为几个主要阶段,从电源开启到用户登录。每个…

Java笔试|面试 —— 对继承性的理解

面试/笔试:谈谈对继承性的理解>继承性的好处:-减少了代码的冗余,提高了复用性-提高了扩展性(父类统一扩展、继承后扩展)-为多态的使用,提供了前提>Java中继承的特点-局限性:类的单继承性。…

有一个日期(Date)类的对象和一个时间(Time)类的对象,均已指定了内容,要求一次输出其中的日期和时间

可以使用友元成员函数。在本例中除了介绍有关友元成员函数的简单应用外,还将用到类的提前引用声明,请读者注意。编写程序: 运行结果: 程序分析: 在一般情况下,两个不同的类是互不相干的。display函…

关于Java异常机制及finally关键字的详解

异常机制(Exception) 软件程序在运行过程中,非常可能遇到异常问题。常见的异常: 1、用户输入错误 2、设备错误 3、硬件问题,例如打印机关掉、服务器问题 4、物理限制:磁盘满了 Java是采用面向对象的方式来处理异常的。 处理过程…

基于Java的水果商品销售网站

1 水果商品销售网站概述 1.1 课题简介 随着电子商务在当今社会的迅猛发展,水果在线销售已逐渐演变为一种极为便捷的购物方式,日益受到人们的青睐。本系统的设计初衷便是构建一个功能完备、用户体验友好的水果销售平台,致力于为用户提供优质、…

Xcode简介

Xcode 是苹果公司为 macOS 平台开发的一款集成开发环境(Integrated Development Environment,IDE),主要用于开发 iOS、iPadOS、macOS、watchOS 和 tvOS 的应用程序。Xcode 包含了一系列的软件开发工具,涵盖了从编写代码…

【植物大战僵尸杂交版】获取+存档插件

文章目录 一、还记得《植物大战僵尸》吗?二、在哪下载,怎么安装?三、杂交版如何进行存档功能概述 一、还记得《植物大战僵尸》吗? 最近,一款曾经在15年前风靡一时的经典游戏《植物大战僵尸》似乎迎来了它的"文艺复…

渐开线花键测量学习笔记分享

大家好,继续渐开线花键的相关内容,本期是渐开线花键测量相关的学习笔记分享: 花键检测项目有花键大径和小径检验;内花键齿槽宽和外花键齿厚,以及渐开线终止圆 和起始圆直径检测;齿距累计误差 、齿形误差 、…