@allahjs/utils

中文文档
2.0.1发布于 2026/10/25MITTypeScriptESM + CJS构建来源已验证近 30 天下载 2176

A utility library for common JavaScript/TypeScript functions

原始使用文档
文档目录26 节
  1. 特性
  2. 安装
  3. 使用方法
  4. 完整导入
  5. 按需导入
  6. 分模块导入
  7. API 文档
  8. 请求工具 (Request)
  9. 字符串工具 (String)
  10. 数组工具 (Array)
  11. 对象工具 (Object)
  12. 日期工具 (Date)
  13. 数字工具 (Number)
  14. 验证工具 (Validation)
  15. 异步工具 (Async)
  16. DOM 工具 (DOM)
  17. 开发
  18. 发布到 NPM
  19. 首次发布
  20. 后续版本发布
  21. 发布前自动执行
  22. 注意事项
  23. 贡献
  24. 许可证
  25. 更新日志
  26. 1.0.0

allahjs-utils

npm version GitHub stars npm downloads license bundle size

一个功能丰富的 JavaScript/TypeScript 工具库,提供常用的工具函数,帮助开发者提高开发效率。

特性

  • 🚀 TypeScript 支持 - 完整的类型定义
  • 📦 模块化设计 - 支持按需导入
  • 🌐 多环境支持 - 支持 Node.js 和浏览器环境
  • 🧪 完整测试 - 高覆盖率的单元测试
  • 📚 详细文档 - 完整的 API 文档和示例

安装

# 使用 pnpm
pnpm install @allahjs/utils

# 使用 npm
npm install @allahjs/utils

使用方法

完整导入

import * as utils from '@allahjs/utils';

// 使用字符串工具
const result = utils.capitalize('hello world'); // "Hello world"

按需导入

import { capitalize, formatDate, unique } from '@allahjs/utils';

const text = capitalize('hello'); // "Hello"
const date = formatDate(new Date(), 'YYYY-MM-DD'); // "2024-01-01"
const arr = unique([1, 2, 2, 3]); // [1, 2, 3]

分模块导入

import { capitalize, toCamelCase } from '@allahjs/utils/string';
import { unique, chunk } from '@allahjs/utils/array';
import { deepClone, merge } from '@allahjs/utils/object';

API 文档

请求工具 (Request)

封装了跨平台的 HTTP 请求,根据运行环境自动选择合适的请求库:

环境reqEnv 值底层实现
浏览器 / Node.js(默认)'browser'Axios
Fetch'fetch'原生 fetch API
React Native'rn'原生 fetch API
UniApp / 微信小程序'uni'uni.request(通过 Axios 适配器)
import { request } from '@allahjs/utils';

// POST 请求(默认,使用 Axios)
const data = await request('/api/list', {
  params: { pageNum: 1 },
  manner: 'json'
});

// GET 请求
const detail = await request('/api/detail', {
  method: 'get',
  params: { id: 1 }
});

// 指定环境
await request('/api/data', { reqEnv: 'fetch' });    // 使用 fetch
await request('/api/data', { reqEnv: 'rn' });       // React Native
await request('/api/data', { reqEnv: 'uni' });      // UniApp

字符串工具 (String)

  • capitalize(str) - 首字母大写
  • toCamelCase(str) - 转换为驼峰命名
  • toKebabCase(str) - 转换为短横线命名
  • toSnakeCase(str) - 转换为下划线命名
  • truncate(str, length, suffix) - 截断字符串
  • trim(str) - 移除两端空白
  • randomString(length, chars) - 生成随机字符串

数组工具 (Array)

  • unique(arr) - 数组去重
  • chunk(arr, size) - 数组分块
  • flatten(arr, depth) - 数组扁平化
  • shuffle(arr) - 数组洗牌
  • intersection(arr1, arr2) - 求交集
  • difference(arr1, arr2) - 求差集
  • groupBy(arr, keyFn) - 数组分组

对象工具 (Object)

  • deepClone(obj) - 深拷贝
  • merge(target, ...sources) - 合并对象
  • get(obj, path, defaultValue) - 获取属性值
  • set(obj, path, value) - 设置属性值
  • unset(obj, path) - 删除属性
  • paths(obj) - 获取所有路径

日期工具 (Date)

  • formatDate(date, format) - 格式化日期
  • timeAgo(date) - 相对时间
  • addTime(date, amount, unit) - 添加时间
  • getDateRange(date, unit) - 获取日期范围
  • isSameDay(date1, date2) - 判断同一天
  • isLeapYear(year) - 判断闰年
  • getDaysInMonth(year, month) - 获取月份天数

数字工具 (Number)

  • formatNumber(num, separator) - 格式化数字
  • toFixed(num, digits) - 保留小数位
  • random(min, max, integer) - 生成随机数
  • clamp(num, min, max) - 限制范围
  • mapRange(value, fromMin, fromMax, toMin, toMax) - 映射范围
  • isEven(num) / isOdd(num) - 判断奇偶
  • percentage(value, total, digits) - 计算百分比
  • formatBytes(bytes, digits) - 格式化文件大小

验证工具 (Validation)

  • isEmail(email) - 验证邮箱
  • isPhone(phone) - 验证手机号
  • isIdCard(idCard) - 验证身份证
  • isUrl(url) - 验证URL
  • isIp(ip) - 验证IP地址
  • passwordStrength(password, options) - 密码强度
  • isBankCard(cardNumber) - 验证银行卡
  • hasChinese(text) / isChineseOnly(text) - 中文验证

异步工具 (Async)

  • delay(ms) - 延迟执行
  • withTimeout(promise, timeout) - 超时控制
  • retry(fn, maxRetries, delayMs) - 重试机制
  • concurrent(tasks, concurrency) - 并发控制
  • debounce(fn, delay) - 防抖函数
  • throttle(fn, interval) - 节流函数
  • AsyncQueue - 异步队列类
  • memoizeAsync(fn, keyFn, ttl) - 异步缓存

DOM 工具 (DOM)

  • $(selector, parent) / $$(selector, parent) - 元素查询
  • addClass(element, className) - 添加CSS类
  • removeClass(element, className) - 移除CSS类
  • toggleClass(element, className) - 切换CSS类
  • hasClass(element, className) - 检查CSS类
  • setStyle(element, styles) - 设置样式
  • getStyle(element, property) - 获取样式
  • createElement(tagName, attributes, children) - 创建元素
  • getElementPosition(element) - 获取位置
  • isInViewport(element, threshold) - 检查是否在视口
  • scrollToElement(element, options) - 滚动到元素
  • copyToClipboard(text) - 复制到剪贴板
  • observeResize(element, callback) - 监听大小变化

开发

# 安装依赖
pnpm install

# 开发模式(监听文件变化)
pnpm run dev

# 构建
pnpm run build

# 运行测试
pnpm run test

# 监听测试
pnpm run test:watch

# 代码检查
pnpm run lint

# 修复代码风格
pnpm run lint:fix

# 类型检查
pnpm run type-check

发布到 NPM

首次发布

  1. 检查当前 registry:

    npm config get registry
    
  2. 设置为 npm 官方源:

    npm config set registry https://registry.npmjs.org/
    
  3. 登录 npm 账号:

    npm login --registry=https://registry.npmjs.org/
    
  4. 验证登录状态:

    npm whoami --registry=https://registry.npmjs.org/
    
  5. 测试发布(推荐先执行):

    pnpm run publish:dry
    
  6. 正式发布:

    pnpm run publish:npm
    

后续版本发布

  1. 更新版本号:

    npm version patch   # 修复版本 1.0.0 -> 1.0.1
    npm version minor   # 功能版本 1.0.0 -> 1.1.0  
    npm version major   # 重大版本 1.0.0 -> 2.0.0
    
  2. 发布新版本:

    pnpm run publish:npm
    

发布前自动执行

  • 🧹 清理旧的构建文件
  • 🔨 重新构建项目
  • 🧪 运行所有测试
  • ✅ 只有测试通过才能发布

注意事项

  • 📝 如果平时使用淘宝镜像源,发布时必须切换到 npm 官方源
  • 🔐 登录时需要输入 npm 用户名、密码和邮箱
  • ✅ 发布完成后可以切换回常用的镜像源:
    npm config set registry https://registry.npmmirror.com/
    

贡献

欢迎提交 Issue 和 Pull Request!

许可证

MIT License

更新日志

1.0.0

  • 初始版本发布
  • 包含字符串、数组、对象、日期、数字、验证、异步、DOM 等工具函数

本包通过 semantic-release 自动发布,提交信息请遵循 Conventional Commits 规范。

版本与发布记录

@allahjs/utils 共发布 26 个版本,首次发布于 2026/02/16;过去 12 个月发布了 26 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.0.1latest2026/10/2514 天前
2.0.02026/10/2514 天前
1.17.32026/10/021 个月前
1.17.22026/10/021 个月前
1.17.12026/10/021 个月前
1.17.02026/10/021 个月前

关于 @allahjs/utils 的常见问题

@allahjs/utils 是什么?

A utility library for common JavaScript/TypeScript functions

如何安装 @allahjs/utils?

在项目目录运行 npm install @allahjs/utils,或使用 pnpm add / yarn add / bun add。

@allahjs/utils 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@allahjs/utils 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@allahjs/utils 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@allahjs/utils 可以商用吗?

@allahjs/utils 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@allahjs/utils 的下载量有多少?

根据 npm 官方下载统计,@allahjs/utils 在 2026/10/06 – 2026/11/04 这 30 天内被下载 2,176 次,日均约 73 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@allahjs/utils 还在维护吗?

最新版本 2.0.1 发布于 2026/10/25(14 天前);至今共发布 26 个版本,其中过去 12 个月发布了 26 个;首次发布于 2026/02/16。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。