@phelan/toolkit
v0.0.1
Published
mohist utils
Readme
m-lib
一个功能完善的工具方法库,基于 unbuild 构建,使用 Changeset 进行版本管理。
功能特性
- ✅ 代码规范: ESLint 代码规范检查
- ✅ 常量管理: 域名常量、API 路径等常量配置
- ✅ 环境判断: 项目当前所处环境(Dev/Stage/SL/Prod)判断
- ✅ 域名管理: 当前环境域名判断和 API 地址生成
- ✅ 通用监控: 错误监控、性能监控、用户行为监控
- ✅ 多语言: i18n 国际化支持
- ✅ 数字计算: decimal.js 封装,精确计算
- ✅ 网络请求: axios 实例封装,支持拦截器、重试等
- ✅ 表单校验: 常用验证器封装
- ✅ 日期处理: dayjs 封装,常用日期方法
安装
npm install m-lib使用示例
环境判断
import { getEnv, isDev, isProd, EnvType } from "m-lib";
// 获取当前环境
const env = getEnv(); // 'dev' | 'stage' | 'sl' | 'prod'
// 判断环境
if (isDev()) {
console.log("开发环境");
}
if (isProd()) {
console.log("生产环境");
}域名管理
import { getDomain, getApiUrl } from "m-lib";
// 获取当前环境域名
const domain = getDomain();
// 获取完整API地址
const apiUrl = getApiUrl("/api/user/info");监控
import { monitor } from "m-lib";
// 上报错误
monitor.error("login_error", new Error("登录失败"));
// 上报性能
monitor.performance("page_load", 1234);
// 上报用户行为
monitor.behavior("button_click", { buttonId: "submit" });
// 上报业务事件
monitor.business("order_created", { orderId: "123" });多语言
import { i18n } from "m-lib";
// 设置语言
i18n.setLanguage("en-US");
// 添加翻译资源
i18n.addResources("zh-CN", {
hello: "你好",
user: {
name: "用户名",
},
});
// 翻译
const text = i18n.t("hello"); // '你好'
const userName = i18n.t("user.name"); // '用户名'
const withParams = i18n.t("welcome", { name: "John" }); // 支持 {{name}} 占位符数字计算
import { add, subtract, multiply, divide, formatMoney } from "m-lib";
// 精确计算
const sum = add(0.1, 0.2); // 0.3
const product = multiply(1.5, 2.5); // 3.75
// 格式化
const money = formatMoney(1234.567); // '1234.57'网络请求
import { request, get, post } from "m-lib";
// 使用默认实例
const data = await get("/api/user/info");
// POST请求
const result = await post("/api/user/login", {
username: "admin",
password: "123456",
});
// 创建自定义实例
import { createRequest } from "m-lib";
const customRequest = createRequest({
baseURL: "https://api.example.com",
timeout: 5000,
});表单校验
import { Validator, validateForm } from "m-lib";
// 单个验证
const result = Validator.email("[email protected]");
if (!result.valid) {
console.log(result.message);
}
// 组合验证
const rule = Validator.combine(
Validator.required,
Validator.stringLength(6, 20),
Validator.pattern(/^[a-zA-Z0-9]+$/, "只能包含字母和数字")
);
// 表单验证
const formData = {
username: "admin",
email: "[email protected]",
};
const rules = {
username: [Validator.required, Validator.stringLength(3, 20)],
email: [Validator.required, Validator.email],
};
const { valid, errors } = validateForm(formData, rules);日期处理
import { format, now, add, isToday, smartFormat } from "m-lib";
// 格式化日期
const dateStr = format(now(), "YYYY-MM-DD HH:mm:ss");
// 添加时间
import { addTime } from "m-lib";
const nextWeek = addTime(7, "day");
// 判断是否为今天
if (isToday(someDate)) {
console.log("今天");
}
// 智能格式化
const smart = smartFormat(date); // '12:00' | '昨天 12:00' | '2024-01-01 12:00'开发
安装依赖
npm install构建
npm run build开发模式(监听文件变化)
npm run dev代码检查
npm run lint
npm run lint:fix类型检查
npm run typecheck版本管理
本项目使用 Changesets 进行版本管理。
创建变更集
npm run changeset版本升级
npm run version发布
npm run release模块说明
constants
域名常量、API 路径常量等配置。
env
环境判断工具,支持 Dev/Stage/SL/Prod 四种环境。
domain
域名管理工具,根据环境自动获取对应域名。
monitor
通用监控工具,支持错误监控、性能监控、用户行为监控等。
i18n
多语言国际化工具,支持嵌套翻译、参数替换等。
decimal
基于 decimal.js 的精确数字计算工具。
request
基于 axios 的网络请求工具,支持拦截器、重试、错误处理等。
validator
表单验证工具,提供常用验证规则。
date
基于 dayjs 的日期处理工具,提供常用日期方法。
License
MIT
