利用vite插件开发,实现工程化打包,建议收藏

1 篇文章 0 订阅
文章介绍了如何通过Vite插件功能实现在打包过程中动态修改config.js文件的配置,以满足不同客户对同一产品的个性化需求,如调整审核流程级别。通过编写插件,根据项目名称(如A公司或B公司)在打包时写入不同的配置值,避免了每次打包后手动修改的繁琐工作。
摘要由CSDN通过智能技术生成

为什么需要工程化打包?

vue3+vite的工程,普遍都会在项目public文件夹,创建一个config.js文件,存放一些配置态的数据,用于在产品上线后,可能会根据需要修改参数值,从而达到线上配置数据目的。

但是config.js文件中的配置数据 ,都是在工程打包后默认就已经生成。无法做到在打包过程中修改配置。

如果同一个产品出售给另一家公司,但是此公司要求某某功能的审核流程级别只有2级,而当前产品的审核级别默认配置是3级。

怎么办?也许你会想到,工程打包后再修改配置文件不就行了嘛。如果要修改有10个甚至更多的配置呢?修改一次还好,万一是迭代产品,后期维护每打包一次都需要修改哦,那不累死才怪!!!

有没有办法在打包后,vite将config.js文件内容修改呢?答案是有的!

利用vite插件功能,打包时传入一个标记,区分是哪个公司,插件再根据标记写入不同的值到config.js中。

具体实现如下,假设config.js内容是一个审核流程,A公司需要3级审核,B公司只需要2级审核。

// 审核流程
window.zspReviewConfig = {
    // 审核级别
    "max_level": 3
};

一、编写插件,新建3个文件如下图

 configJsData.js

// public/config.js配置文件
export default {
    create(data) {

        return `// 审核流程
window.zspReviewConfig = {
    // 审核级别
    "max_level": ${data.max_level}
};`
    }
}

fsUtil.js负责写本地文件

import file from 'fs';

export default {
    write(data, buildOutDir) {
        const configJsPath = buildOutDir + '/config.js';
        console.log('config.js 路径 ---> ', configJsPath)

        file.writeFile(configJsPath, data, err => {
            if (err) {
                console.error('config.js 文件写入失败:' + err.message);
            }
            console.log('config.js 文件写入成功!');
        })
    }
}

vite-plugin-public-config.js负责定制A、B公司的默认功能

import fsUtil from "./fsUtil";
import configJsData from "./configJsData";

const pluginName = 'public-config';
export default function publicConfig(projectName) {
    // 路径
    let buildOutDir = '';
    // 功能清单
    const data = {max_level: 3}
    // 返回的是插件对象
    return {
        // 名称
        name: pluginName,
        apply: 'build',
        // 启动就调用
        buildStart() {
            switch (projectName) {
                case 'A': // A公司
                    data.max_level = 3;
                    break;
                case 'B': // B公司
                    data.max_level = 2;
                    break;
            }
        },

        writeBundle(options, bundle) {
            buildOutDir = options.dir;
        },

        closeBundle() {
            fsUtil.write(configJsData.create(data), buildOutDir);
        }
    }
}
 

二、修改vite构建器的配置文件

1、引用插件

2、实例化插件,入参工程标记A

3、将A公司vite文件拷贝一份,只需要修改插件处,实例化的入参修改为B即可。

以上就是此次分享内容,创作不易,请关注、转发、看一看。谢谢!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易家兴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值