vite共享配置之---resolve

ops/2025/2/8 2:52:33/

一、基本作用

resolve配置项主要用于指定如何解析模块路径,包括设置别名、指定扩展名、避免重复加载依赖以及指定解析条件等。通过合理配置resolve选项,可以更灵活地管理和优化项目中的模块解析逻辑。

二、具体配置选项

1、alias:用于为模块路径创建别名,可以简化导入路径。例如,可以将'@'映射到/src目录,这样在项目中就可以使用简化的路径来导入模块。具体配置如下:

javascript">resolve: {alias: {'@': '/src', // 将 '@' 映射到 '/src' 目录'@components': '/src/components', // 将 '@components' 映射到 '/src/components' 目录'@utils': '/src/utils' // 将 '@utils' 映射到 '/src/utils' 目录}
}

使用别名后,可以这样导入模块:

javascript">import Button from '@components/Button';
import { formatDate } from '@utils/date';

    2、extensions:允许指定在解析模块时自动添加的文件扩展名。默认情况下,Vite会解析.mjs.js.ts.jsx.tsx.json等扩展名。但你也可以根据需要进行自定义,例如:

    javascript">resolve: {extensions: ['.js', '.ts', '.vue'] // 自动解析这些扩展名
    }

    这样,在导入模块时就可以省略扩展名:

    javascript">import Example from '@/components/Example'; // 省略了 '.vue' 扩展名

      3、dedupe:用于避免重复加载某些依赖,通常用于处理依赖项之间的版本冲突。例如,如果你的项目中同时使用了不同版本的React,你可以通过dedupe选项来指定只加载一个版本的React

      javascript">resolve: {dedupe: ['react', 'react-dom'] // 避免重复加载 react 和 react-dom
      }

      Vite 在执行 resolve.dedupe 时会根据以下策略来决定去掉哪个版本:

      1. 基于传入的顺序resolve.dedupe 中的依赖数组顺序可能会影响去重的行为。假设你在配置中列出 reactreact-dom,Vite 会尝试按照这个顺序去解析并去重依赖。也就是说,如果你指定了 ['react', 'react-dom'],那么如果其他依赖有多个版本,Vite 会优先使用配置中顺序靠前的版本。

      2. 优先使用第一个出现的版本:在去重时,Vite 会优先保留第一个出现的版本。如果没有明确的版本要求,它会保留最早出现的版本。

      三、配置示例

      以下是一个完整的vite.config.js配置示例,其中包含了resolve配置项:

      javascript">import { defineConfig } from 'vite';
      import { resolve } from 'path';export default defineConfig({resolve: {alias: {'@': resolve(__dirname, 'src'), // 将 '@' 映射到 'src' 目录'@components': resolve(__dirname, 'src/components'), // 将 '@components' 映射到 'src/components' 目录'@utils': resolve(__dirname, 'src/utils') // 将 '@utils' 映射到 'src/utils' 目录},extensions: ['.js', '.ts', '.json', '.vue'], // 自动解析这些扩展名dedupe: ['react', 'react-dom'], // 避免重复加载 react 和 react-dom// conditions 可以根据需要进行配置},// 其他配置项...
      });


      http://www.ppmy.cn/ops/156612.html

      相关文章

      Python小游戏29乒乓球

      import pygame import sys # 初始化pygame pygame.init() # 屏幕大小 screen_width 800 screen_height 600 screen pygame.display.set_mode((screen_width, screen_height)) pygame.display.set_caption("打乒乓球") # 颜色定义 WHITE (255, 255, 255) BLACK (…

      【蓝桥杯嵌入式】2_LED

      全部代码网盘自取 链接:https://pan.baidu.com/s/1PX2NCQxnADxYBQx5CsOgPA?pwd3ii2 提取码:3ii2 1、电路图 74HC573是八位锁存器,当控制端LE脚为高电平时,芯片“导通”,LE为低电平时芯片“截止”即将输出状态“锁存”…

      Linux系统离线部署MySQL详细教程(带每步骤图文教程)

      1、登录官网下载对应的安装包 MySQL :: Developer Zone 2、将压缩包上传到服务器上,这里直接上传到/usr/local路径上 使用sftp工具上传到/usr/local目录上 3、解压压缩包 tar -xf mysql-8.0.39-linux-glibc2.17-x86_64.tar.xz 4、将mysql-8.0.39-linux-glibc2.17…

      通过 Docker 部署 S3 对象存储服务器的终极教程

      在当今数据驱动的时代,拥有一个灵活且高效的对象存储解决方案至关重要。利用 Docker 部署 S3 对象存储服务器,不仅可以提升数据管理的灵活性,还能大幅降低运营成本。本文将为您提供详细步骤,助您轻松搭建 S3 存储解决方案。 如何…

      【Mybatis Plus】JSqlParser解析sql语句

      【Mybatis Plus】JSqlParser解析sql语句 【一】JSqlParser 是什么【二】JSqlParser 的安装步骤【三】使用场景【1】sql语句解析【2】SQL 语句转换【3】SQL 语句生成【4】SQL 语句验证 【四】在使用 JSqlParser 时,如何处理 SQL 注入攻击?【1】使用预编译…

      Spark SQL读写Hive Table部署

      个人博客地址:Spark SQL读写Hive Table部署 | 一张假钞的真实世界 官网参考文档:Hive Tables。 本文使用的组件版本如下: Spark 3.1.2Hive 3.1.2 第一步:Hive部署 在所有Worker节点上部署Hive。主要是使用Hive下面的libs。 …

      docker和k8s实践

      Docker 和 Kubernetes 是现代云原生应用开发和运维中的两个重要技术。Docker 提供容器化技术,可以将应用及其依赖打包在容器中,而 Kubernetes 则负责容器的编排、部署、伸缩和管理。以下是 Docker 和 Kubernetes 的实践指南,涵盖基础安装、配…

      【华为OD机试】真题E卷-招聘(Java)

      一、题目描述 题目描述: 某公司组织一场公开招聘活动,假设由于人数和场地的限制,每人每次面试的时长不等,并已经安排给定,用(S1,E1)、 (S2,E2)、 (Sj,Ej)…(Si < Ei,均为非负整数)表示每场面试的开始和结束时间。 面试采用一对一的方式,即一名面试官同时只能面试一名…