位置: IT常识 - 正文

【vite·4】vite在多环境下的配置集成方案及defineConfig(非常详细)(vitem)

编辑:rootadmin
【vite·4】vite在多环境下的配置集成方案及defineConfig(非常详细)

推荐整理分享【vite·4】vite在多环境下的配置集成方案及defineConfig(非常详细)(vitem),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:virtute,vited,vitec,vite svelte,vite cli,vite svelte,vite cli,vitejte,内容如对您有帮助,希望把文章链接给更多的朋友!

vite的默认配置文件是vite.config.js,最基础的配置文件格式如下:

export default { // 配置选项};

我们也可以通过 –config 命令行选项指定一个配置文件,命令行输入: vite --config my-config.js

vite运行在node环境,为什么vite.config.js能够写成esmodule的形式? vite在读取vite.config.js时,会率先通过node解析文件语法, 如果发现你是esmodule规范会直接将你的esmodule规范进行替换变成commonjs规范

配置语法提示

我们采用vscode编译器增添vite配置时,编译器是没有任何提示的,这对我们很不友好! (下图的提示并不是vite的可选配置提示,是插件对js的通用提示)

webstorm有很好的语法补全功能,vscode没有如果使用vscode或者其他的编辑器, 想要编译器进行智能提示,需要做一些特殊处理

通过下面的两种配置,我们可以获得代码补全功能。

defineConfig

加上defineConfig,会惊奇的发现,配置项居然有代码提示了,真香!

jsdoc 注释法【vite·4】vite在多环境下的配置集成方案及defineConfig(非常详细)(vitem)

jsDoc是一个用于JavaScript的API文档生成器,官网:https://jsdoc.zcopy.site/

将配置写在viteConfig内并导出,然后再其上面写如下注释:

/** @type import("vite").UserConfig */

环境模式配置

webpack时代,基于不同的环境,开发者通常会设置不同的配置文件,如:webpack.dev.config、webpack.prod.config、webpack.base.config 等等。 vite中,基于不同环境设置不同配置,只需要导出这样一个函数:

export default defineConfig(({ command, mode, ssrBuild }) => { if (command === 'serve') { return { // dev 独有配置 } } else { // command === 'build' return { // build 独有配置 } }})在开发环境下 command 的值为 serve生产环境下为 command 的值为 build多环境配置集成的一种实现方式

同webapack配置一样,我们也可以定义多个配置文件,然后再vite.config.js中引入使用

import { defineConfig } from "vite";import viteBaseConfig from "./vite.base.config";import viteDevConfig from "./vite.dev.config";import viteProdConfig from "./vite.prod.config";export default defineConfig(({ command, mode, ssrBuild }) => { if (command === "serve") { return { // dev 独有配置 ...viteBaseConfig, ...viteProdConfig }; } else { // command === 'build' return { // build 独有配置 ...viteBaseConfig, ...viteDevConfig }; }});

vite.base.config.js代码如下,其余类似。

import { defineConfig } from "vite";export default defineConfig( {});多环境配置集成的策略模式写法

我们可以使用策略模式让代码变得更加高级

import { defineConfig } from "vite";import viteBaseConfig from "./vite.base.config";import viteDevConfig from "./vite.dev.config";import viteProdConfig from "./vite.prod.config";const envResolver = { // build: () => ({...viteBaseConfig,... viteProdConfig}) 这种方式也可以 // Object.assign中的{}是为了防止viteBaseConfig被修改。 build: () => Object.assign({}, viteBaseConfig, viteProdConfig), serve: () => Object.assign({}, viteBaseConfig, viteDevConfig),};export default defineConfig(({ command, mode, ssrBuild }) => { return envResolver[command]();});

Object.assign() Object.assign() 方法将所有可枚举属性从一个或多个源对象复制到目标对象,返回修改后的对象。 注意:该方法会修改源对象!

const target = { a: 1, b: 2 };const source = { b: 4, c: 5 };const returnedTarget = Object.assign(target, source);console.log(target);// expected output: Object { a: 1, b: 4, c: 5 }console.log(returnedTarget === target);// expected output: true多环境配置测试

我们在vite.config.js中根据不同环境写下提示信息

import { defineConfig } from "vite";import viteBaseConfig from "./vite.base.config";import viteDevConfig from "./vite.dev.config";import viteProdConfig from "./vite.prod.config";const envResolver = { build: () => { console.log("生产模式"); Object.assign({}, viteBaseConfig, viteProdConfig) }, serve: () => { console.log("开发模式"); Object.assign({}, viteBaseConfig, viteDevConfig) },};export default defineConfig(({ command, mode, ssrBuild }) => { return envResolver[command]();});

package.json中增加"build": “vite build”

"scripts": { "test": "echo \"Error: no test specified\" && exit 1", "dev": "vite", "build": "vite build" },

命令行执行 npm run dev 命令行执行 npm run build

本文链接地址:https://www.jiuchutong.com/zhishi/283090.html 转载请保留说明!

上一篇:dm分区图解 电脑dm分区如何进行(dm分区工具图解教程)

下一篇:Linux做代理服务器实现步骤详解(代理 linux)

  • 沈腾地图语音在哪里有(沈腾地图播报)

    沈腾地图语音在哪里有(沈腾地图播报)

  • vivos6如何恢复出厂设置(vivo6s恢复出厂设置)

    vivos6如何恢复出厂设置(vivo6s恢复出厂设置)

  • 荣耀9x与9xpro的区别

    荣耀9x与9xpro的区别

  • 网络计算属于计算机网络吗(网络计算是一种什么计算)

    网络计算属于计算机网络吗(网络计算是一种什么计算)

  • 指定电子邮件地址是什么(指定电子邮件地址是什么意思)

    指定电子邮件地址是什么(指定电子邮件地址是什么意思)

  • 单反拍人像用什么档(单反拍人像用什么对焦模式)

    单反拍人像用什么档(单反拍人像用什么对焦模式)

  • 微信如何引用别人的话回复(微信如何引用别人的话)

    微信如何引用别人的话回复(微信如何引用别人的话)

  • 华为是否支持aptx(华为是否支持carlife)

    华为是否支持aptx(华为是否支持carlife)

  • 检测到ip地址冲突是什么原因(检测到ip地址冲突怎么解决)

    检测到ip地址冲突是什么原因(检测到ip地址冲突怎么解决)

  • oppohd模式是什么意思(oppohd模式有什么用)

    oppohd模式是什么意思(oppohd模式有什么用)

  • microsoft silverlight可以卸载吗(microsoft silverlight插件怎么安装)

    microsoft silverlight可以卸载吗(microsoft silverlight插件怎么安装)

  • 手机太阳下看不清怎办(手机太阳看不清原因)

    手机太阳下看不清怎办(手机太阳看不清原因)

  • 微信夜览怎么设置(微信怎样打开夜间)

    微信夜览怎么设置(微信怎样打开夜间)

  • 已移除蜂窝移动号码什么意思(已移除蜂窝移动怎么恢复)

    已移除蜂窝移动号码什么意思(已移除蜂窝移动怎么恢复)

  • 怎么调表格行高列宽(word表格怎么调表格行高)

    怎么调表格行高列宽(word表格怎么调表格行高)

  • word文档每页行数怎么设置(word每页每行)

    word文档每页行数怎么设置(word每页每行)

  • 锁屏键是哪个(联想笔记本电脑锁屏键是哪个)

    锁屏键是哪个(联想笔记本电脑锁屏键是哪个)

  • 三级域名网站有哪些(三级域名有哪些)

    三级域名网站有哪些(三级域名有哪些)

  • 微信怎么解除情侣关系(微信怎么解除情侣空间设置)

    微信怎么解除情侣关系(微信怎么解除情侣空间设置)

  • 苹果x无线耳机怎么使用(苹果寻找无线耳机)

    苹果x无线耳机怎么使用(苹果寻找无线耳机)

  • 搜狗输入法换行健在哪(搜狗输入法换行键怎么设置)

    搜狗输入法换行健在哪(搜狗输入法换行键怎么设置)

  • qq吃鸡实名认证怎么解除(qq吃鸡实名认证在哪里)

    qq吃鸡实名认证怎么解除(qq吃鸡实名认证在哪里)

  • vivox27微信有美颜功能吗(vivo手机有美颜吗)

    vivox27微信有美颜功能吗(vivo手机有美颜吗)

  • win10壁纸怎么删除(win10壁纸图片怎么删除)

    win10壁纸怎么删除(win10壁纸图片怎么删除)

  • Win7系统中,如何才能连接打印机?(Win7系统中如何快速查询文件内容)

    Win7系统中,如何才能连接打印机?(Win7系统中如何快速查询文件内容)

  • neoCopy.exe - neoCopy是什么进程 有什么用

    neoCopy.exe - neoCopy是什么进程 有什么用

  • 企业申报个税软件怎么下载
  • 一般纳税人季报是哪几个月报税
  • 民办学校房屋要求
  • 服务费发票税率1%
  • 应付票据和应付账款有什么区别
  • 委托加工物资增值税怎么算
  • 收到货款定金计入哪里
  • 冲减上年的所得税费用入什么科目?
  • 2018年债券基金
  • 发票作废税金怎么算
  • 季度奖金个人所得税怎么算
  • 如何查找使用过的手机号
  • 占用土地行为不征收耕地占用税有哪些?
  • 固定资产折旧年限的最新规定2023
  • 证券公司手续费怎么收
  • 税法对弥补亏损的规定是什么?
  • 境外受控公司
  • 税收法定原则的意义
  • 什么样的公司可以交五险一金
  • 增量留底税额怎么进行确定
  • 债权转让账务如何处理
  • 什么是短期借款利率
  • 出口退免税的基本政策包括
  • linux相关命令及用法
  • 彻底清理缓存
  • 应付账款收到票怎么做账
  • 所有者权益会计要素包括
  • 基于php技术
  • 提取法定盈余公积会计科目
  • open开放的意思吗
  • 谁能代替你啊
  • 餐饮业的原材料
  • 会计中财务费用为负
  • 固定资产报废如何记账
  • 增值税专用发票电子版
  • 备抵法账务处理方式
  • mysql执行时间太长
  • sqlserver2008连接
  • mysqlreport显示Com_中change_db占用比例高的问题的解决方法
  • 折旧费属于什么总账科目
  • 收据可以入账报销吗
  • 固定成本和变动成本举例
  • 现金流量表利息支出
  • 盈余公积分配现金股利分录
  • 什么是公允价值变动收益
  • 金税三期升级功能2020
  • 工程物资属于什么科目资产负债表
  • 固定资产折旧四种方法的优缺点
  • 固定资产报废会计
  • 通行费电子发票抵扣填写到附表二的第几栏次
  • mysql使用教程
  • SQL Server中通过reverse取某个最后一次出现的符号后面的内容(字符串反转)
  • mysql5.7.23
  • 用union怎么把结果加起来
  • 关闭默认共享的影响
  • 微软mission
  • 微软数据收集
  • explorer.exe进程文件
  • 电脑系统重装win8
  • vmware虚拟机Linux扩展硬盘
  • sesvc.exe是什么进程
  • Msssrv.exe - Msssrv是什么进程 有什么用
  • win7怎么保留文件升级到win10系统
  • 如何显示文件后缀名
  • unity加密解决方案
  • node connect
  • 使用Jasmine和Karma对AngularJS页面程序进行测试
  • xp没有我的电脑图标怎么办
  • Quick cocos2dx-Lua(V3.3R1)学习笔记(8) ---- 事件篇之单点触摸事件,让我们用精灵模仿一个按钮吧
  • android如何运行项目
  • css全局声明
  • python爬取某人所有朋友圈
  • javascript声明变量的语句
  • shell脚本 -ne 0
  • 说一说我下乡插队时的那点事
  • javascript面向对象精要
  • 可分割项目
  • 小规模纳税人开专票
  • 陕西国家电子税务局2.0
  • 广州地税官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设