ty-tech-npm
v0.1.1
Published
前端常用基础工具函数:时间处理、大小写转换等
Maintainers
Readme
ty-tech-npm
前端常用基础工具函数集合,主要面向你自己项目中复用的小工具,例如:
- 时间处理:格式化、时间差计算等
- 字符串大小写转换:
camelCase、snake_case、kebab-case、PascalCase等 - 数字格式化:千分位、小数位控制等
- URL 处理:query 构建与解析、URL 拼接等
- 对象工具:深拷贝
安装
npm install ty-tech-npm
# 或者
yarn add ty-tech-npm
pnpm add ty-tech-npm使用示例
时间工具
import { formatDate, toTimestamp, diffDays, now } from "ty-tech-npm";
formatDate(Date.now()); // 默认:YYYY-MM-DD HH:mm:ss
formatDate(new Date(), "YYYY/MM/DD"); // 自定义格式
toTimestamp("2025-01-01 00:00:00"); // number | null
diffDays("2025-01-10", "2025-01-01"); // 9
now(); // 当前时间戳(毫秒)支持的格式占位符:
YYYY:四位年份MM:两位月份DD:两位日期HH:两位小时(24 小时制)mm:两位分钟ss:两位秒SSS:三位毫秒
字符串大小写工具
import {
toCamelCase,
toPascalCase,
toSnakeCase,
toKebabCase,
capitalize,
uncapitalize,
upperCase,
lowerCase,
} from "ty-tech-npm";
toCamelCase("hello-world_test"); // helloWorldTest
toPascalCase("hello world"); // HelloWorld
toSnakeCase("helloWorld"); // hello_world
toKebabCase("HelloWorld"); // hello-world
capitalize("hello"); // Hello
uncapitalize("Hello"); // hello
upperCase("hello"); // HELLO
lowerCase("HELLO"); // hello数字格式化
import { formatNumber, toSafeNumber } from "ty-tech-npm";
formatNumber(1234567.89); // 1,234,567.89
formatNumber(1234.5, { decimals: 2 }); // 1,234.50
formatNumber(1234.5, { decimals: 2, trimTrailingZeros: true }); // 1,234.5
formatNumber("1234.567", {
decimals: 1,
thousandSeparator: " ",
decimalSeparator: ",",
}); // 1 234,6
toSafeNumber("42.3"); // 42.3
toSafeNumber("foo"); // nullURL 工具
import { buildQuery, parseQuery, joinUrl, withQuery } from "ty-tech-npm";
buildQuery({ a: 1, b: "x y", tags: ["a", "b"] });
// a=1&b=x%20y&tags=a&tags=b
parseQuery("?a=1&tags=a&tags=b");
// { a: "1", tags: ["a", "b"] }
joinUrl("https://example.com/", "/api/", "v1/users");
// https://example.com/api/v1/users
withQuery("https://example.com/list?page=1", { page: 2, pageSize: 20 });
// https://example.com/list?page=1&page=2&pageSize=20对象深拷贝
import { deepClone } from "ty-tech-npm";
const source = {
a: 1,
b: { c: 2 },
list: [1, { x: 3 }],
createdAt: new Date(),
};
const copy = deepClone(source);
copy.b.c = 999;
console.log(source.b.c); // 2(不会被影响)API 列表
时间相关
formatDate(input, pattern?):格式化时间,返回字符串,非法输入返回空字符串toTimestamp(input):转为毫秒时间戳,非法输入返回nullfromTimestamp(timestamp):从时间戳生成Date,非法输入返回nullnow():当前毫秒时间戳diffMilliseconds(a, b):时间差(毫秒)diffSeconds(a, b):时间差(秒)diffDays(a, b):时间差(天)
字符串相关
toCamelCase(input):转为camelCasetoPascalCase(input):转为PascalCasetoSnakeCase(input):转为snake_casetoKebabCase(input):转为kebab-casecapitalize(input):首字母大写uncapitalize(input):首字母小写upperCase(input):全部转大写lowerCase(input):全部转小写
数字相关
formatNumber(input, options?):数字格式化,支持千分位、小数位控制等toSafeNumber(input):安全转换为数字,失败返回null
URL 相关
buildQuery(params):将对象构建为 querystring(不包含?)parseQuery(qs):解析 querystring 为对象joinUrl(...parts):拼接 URL 片段withQuery(url, params):在 URL 上追加 query 参数
对象相关
deepClone(input, options?):对象深拷贝,支持数组、Date、RegExp、Map、Set、plain object 等
本地开发
# 安装依赖
npm install
# 开发模式(watch 构建)
npm run dev
# 打正式包
npm run build源码在 src 目录下,index.ts 为统一导出入口。
npm 发布流程(手动)
- 确认
package.json中的name已经在 npm 上未被占用 - 更新版本号(遵循 semver),例如:
npm version patch # 或 minor / major- 打包并检查产物:
npm run build
ls dist- 登录并发布:
npm login
npm publish --access public如果是私有包,可以去掉
--access public,或者配置私有 registry。
