位置: 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)

  • 国际货运代理一个月大概有多少收入
  • 外币账户月末怎么结汇
  • 企业出租房屋增值税发票怎么开
  • 小规模申请自开专票
  • 海关入库成功下一步干嘛
  • 个体工商户个人所得税怎么申报
  • 应收账款科目怎么写
  • 工会经费和职工教育经费比例
  • 出差住宿普通发票进项税可以抵扣吗
  • 投资活动购建固定资产
  • 抵扣上月留抵税额的分录
  • 非生产用设备及器具
  • 给员工购消费卡怎么做账
  • 小规模有限公司注销麻烦吗
  • 普票冲红需要收回全部联次吗
  • 子女继承房地产怎么交税
  • 小规模企业所得税优惠政策最新2023
  • 高新企业产品开发的折旧费用可以税前扣除吗?
  • 金税盘减免税款贷方余额
  • 可以做投标保证金的有银行汇票银行保函
  • 外购集体福利用交税吗
  • 销售净利率怎么求
  • 增值税可以提前申报不?
  • 招待客户住宿费可以抵扣进项税吗合理吗
  • 停止维护win7
  • 暂估入库的处理方式有哪三种
  • vue slot标签
  • Win10电脑重装系统要多少钱
  • u启动pe装机工具如何重装系统win10
  • PHP:Memcached::incrementByKey()的用法_Memcached类
  • 企业固定资产有哪些
  • react img onerror
  • 进货发票怎么抵税
  • 结转已销售产品的实际生产成本会计分录
  • vue打包成一个文件
  • Diffusion-GAN: Training GANs with Diffusion 解读
  • 纳汉双语
  • transformer模型包含哪些结构
  • javascriptj
  • oc底层原理
  • 给员工期权和给股票的区别
  • 债券发行费用包括
  • 循环logo
  • 现代服务包括哪些内容是什么
  • sql server怎么创建约束
  • sql server 性能优化
  • sqlserver远程连接失败
  • 承租人损坏租赁物
  • 小规模纳税人企业所得税怎么算
  • 物业管理费发票备注栏要求
  • 购入需安装设备的会计分录
  • 房租季度付款是几个月
  • 投资者向企业投入资本的形式
  • 集团公司股份
  • 什么是限制性股票激励
  • 残料入库计入
  • 主营业务税金及附加借贷方向
  • 车辆不在公司名下加油费可以进公司吗
  • 如何使用费用分割单
  • 施工企业主营业务收入二级科目有哪些
  • Mysql inner join on的用法实例(必看)
  • mysql 5.7.17 winx64安装配置方法图文教程
  • linux如何安装c语言编译器
  • win7系统桌面图标设置
  • Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易配置方法
  • linux vps 教程
  • linux grub2
  • sf2是什么文件
  • 家字取名男孩名字
  • Win7打印机安装
  • ie内存怎么清理
  • node一次执行多个文件
  • dirsearch批量
  • 全面解析A型天秤座男
  • unity cpu优化
  • javascript 对象
  • js基于什么
  • 四川地方税务局网址是什么
  • 为什么购进固定资产不得抵扣
  • 湖北税务发票查询系统网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设