@ivujs/i-utils
Version:
前端模块化 JavaScript 工具库
60 lines (57 loc) • 1.77 kB
JavaScript
import { resolverConfig } from './auto-imports.mjs';
/**
* 提供自动导入插件的解析器
* @param options 配置项,支持3种传参方式
* @returns unplugin-auto-import 解析器
* @example
* // 场景1:默认加载所有方法
* IUtilsResolver()
*
* // 场景2:追加指定方法名
* IUtilsResolver(["getDate"])
*
* // 场景3:精细化控制(排除/只包含/追加)
* IUtilsResolver({
* include: ["getUUID", "getGUID"],
* exclude: ["testLoaded"],
* append: ["formatDate"]
* })
*/
function IUtilsResolver(options) {
// 读取默认配置
const defaultApis = resolverConfig.apis || [];
// api配置
let finalApis = [...defaultApis];
// 参数为数组
if (Array.isArray(options)) {
finalApis = [...new Set([...defaultApis, ...options])];
}
else {
if (options && typeof options === "object") {
// 获得传入解析器的配置参数
const { include = [], exclude = [], append = [] } = options;
// 第一步:处理只包含
if (include.length > 0) {
finalApis = defaultApis.filter((name) => include.includes(name));
}
// 第二步:处理排除
if (exclude.length > 0) {
finalApis = finalApis.filter((name) => !exclude.includes(name));
}
// 第三步:处理追加
if (append.length > 0) {
finalApis = [...new Set([...finalApis, ...append])];
}
}
}
// 返回解析器
return (name) => {
if (finalApis.includes(name)) {
return {
name,
from: resolverConfig.from,
};
}
};
}
export { IUtilsResolver };