{"id":31970665,"url":"https://github.com/winjs-dev/cloud-utils","last_synced_at":"2026-02-28T07:05:02.484Z","repository":{"id":24835326,"uuid":"102559645","full_name":"winjs-dev/cloud-utils","owner":"winjs-dev","description":"常用的工具方法","archived":false,"fork":false,"pushed_at":"2025-10-08T06:36:17.000Z","size":2491,"stargazers_count":13,"open_issues_count":1,"forks_count":13,"subscribers_count":2,"default_branch":"refactor/rslib","last_synced_at":"2025-10-08T08:29:04.707Z","etag":null,"topics":["utils"],"latest_commit_sha":null,"homepage":"https://winjs-dev.github.io/cloud-utils/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/winjs-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-09-06T03:44:42.000Z","updated_at":"2025-10-08T06:35:33.000Z","dependencies_parsed_at":"2023-12-26T07:40:23.440Z","dependency_job_id":"54c4e5b0-2345-45e4-adac-d861e96dc059","html_url":"https://github.com/winjs-dev/cloud-utils","commit_stats":null,"previous_names":["winjs-dev/cloud-utils","cloud-templates/cloud-utils"],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/winjs-dev/cloud-utils","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/winjs-dev%2Fcloud-utils","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/winjs-dev%2Fcloud-utils/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/winjs-dev%2Fcloud-utils/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/winjs-dev%2Fcloud-utils/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/winjs-dev","download_url":"https://codeload.github.com/winjs-dev/cloud-utils/tar.gz/refs/heads/refactor/rslib","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/winjs-dev%2Fcloud-utils/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279017979,"owners_count":26086237,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["utils"],"created_at":"2025-10-14T19:18:07.512Z","updated_at":"2025-10-14T19:18:09.780Z","avatar_url":"https://github.com/winjs-dev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @winner-fed/cloud-utils\n\n一个实用的工具类库，提供丰富的工具函数，帮助开发者提高开发效率。\n\n## 特性\n\n- 🚀 开箱即用：提供丰富的工具函数，无需重复造轮子\n- 🛠️ 类型安全：使用 TypeScript 开发，提供完整的类型定义\n- 📦 **独立函数导入**：支持单个函数导入，极致的按需加载，减小打包体积\n- 🎯 **多格式支持**：提供 ESM、CommonJS、UMD 多种格式，适配不同环境\n- 🔧 可扩展：支持自定义配置，满足不同场景需求\n- 📝 文档完善：提供详细的 API 文档和使用示例\n- 🔄 持续更新：定期更新，保持代码质量\n- ⚡ **零依赖**：除必要的运行时依赖外，无额外依赖\n\n## 安装\n\n```bash\n# 使用 npm\nnpm install @winner-fed/cloud-utils\n\n# 使用 yarn\nyarn add @winner-fed/cloud-utils\n\n# 使用 pnpm\npnpm add @winner-fed/cloud-utils\n```\n\n## 使用\n\n### 完整引入（推荐）\n\n```typescript\nimport { formatDate, accAdd, isEmpty } from '@winner-fed/cloud-utils';\n\n// 使用日期格式化\nconst formattedDate = formatDate(new Date(), 'YYYY-MM-DD');\n\n// 使用精确加法\nconst sum = accAdd(0.1, 0.2); // 0.3\n\n// 判断是否为空\nconst empty = isEmpty(null); // true\n```\n\n### 独立函数导入（按需加载）\n\n对于只需要少数几个函数的场景，可以直接导入独立函数，减少打包体积：\n\n```typescript\n// ESM 格式 - 自动选择合适的文件\nimport { accAdd } from '@winner-fed/cloud-utils/accAdd';\nimport { formatDate } from '@winner-fed/cloud-utils/formatDate';\nimport { isEmpty } from '@winner-fed/cloud-utils/isEmpty';\n\n// CommonJS 格式\nconst { accAdd } = require('@winner-fed/cloud-utils/accAdd');\nconst { formatDate } = require('@winner-fed/cloud-utils/formatDate');\n```\n\n### 直接路径导入\n\n如果需要明确指定导入格式：\n\n```typescript\n// 明确使用 ESM 格式\nimport { accAdd } from '@winner-fed/cloud-utils/dist/esm/accAdd.js';\n\n// 明确使用 CommonJS 格式\nconst { accAdd } = require('@winner-fed/cloud-utils/dist/cjs/accAdd.js');\n```\n\n### 完整命名空间导入\n\n```typescript\nimport * as utils from '@winner-fed/cloud-utils';\n\n// 使用工具函数\nconst result = utils.formatDate(new Date(), 'YYYY-MM-DD');\nconst sum = utils.accAdd(0.1, 0.2);\n```\n\n## 包结构\n\n本包提供了多种格式以适应不同的使用场景：\n\n```\n@winner-fed/cloud-utils/\n├── dist/\n│   ├── index.js           # ESM 主入口\n│   ├── index.cjs          # CommonJS 主入口\n│   ├── index.d.ts         # TypeScript 声明文件\n│   ├── *.d.ts             # 独立函数的声明文件\n│   ├── esm/               # ESM 格式的独立函数\n│   │   ├── accAdd.js\n│   │   ├── formatDate.js\n│   │   └── ...\n│   ├── cjs/               # CommonJS 格式的独立函数\n│   │   ├── accAdd.js\n│   │   ├── formatDate.js\n│   │   └── ...\n│   └── umd/               # UMD 格式（浏览器直接使用）\n│       └── index.js\n```\n\n### 在浏览器中使用\n\n```html\n\u003c!-- 通过 CDN 引入 UMD 格式 --\u003e\n\u003cscript src=\"https://unpkg.com/@winner-fed/cloud-utils/dist/umd/index.js\"\u003e\u003c/script\u003e\n\u003cscript\u003e\n  // 全局变量 cloudUtils\n  const result = cloudUtils.formatDate(new Date(), 'YYYY-MM-DD');\n  const sum = cloudUtils.accAdd(0.1, 0.2);\n\u003c/script\u003e\n```\n\n## 性能对比\n\n不同的导入方式适用于不同的使用场景：\n\n| 导入方式 | 包体积 | 适用场景 | 示例 |\n|---------|-------|---------|------|\n| **完整引入** | ~94KB | 使用多个函数时推荐 | `import { a, b, c } from '@winner-fed/cloud-utils'` |\n| **独立函数导入** | ~1-3KB/函数 | 只使用少数函数时 | `import { accAdd } from '@winner-fed/cloud-utils/accAdd'` |\n| **直接路径导入** | ~1-3KB/函数 | 明确指定格式时 | `import { accAdd } from '@winner-fed/cloud-utils/dist/esm/accAdd.js'` |\n\n### 选择建议\n\n- 🚀 **使用 3 个以上函数**：推荐完整引入\n- ⚡ **只使用 1-2 个函数**：推荐独立函数导入\n- 🎯 **对包体积非常敏感**：使用独立函数导入\n- 🛠️ **需要特定格式**：使用直接路径导入\n\n## 功能分类\n\n### 日期处理\n- `formatDate`: 日期格式化\n- `formatDateToTimeStamp`: 日期转时间戳\n- `getMonthOfDay`: 获取月份天数\n- `getYearOfDay`: 获取年份天数\n- `isLeapYear`: 判断是否为闰年\n\n### 数学计算\n- `accAdd`: 精确加法\n- `preZeroFill`: 数字前补零\n- `toNonExponential`: 数字转非科学计数法\n- `formatNumber`: 数字格式化\n\n### 类型判断\n- `is`: 类型判断工具集\n- `isEmpty`: 判断是否为空\n- `isEmptyObject`: 判断是否为空对象\n- `isValidDate`: 判断是否为有效日期\n- `isDigit`: 判断是否为数字\n- `isLetters`: 判断是否为字母\n- `isHTML`: 判断是否为 HTML 字符串\n\n### 字符串处理\n- `trim`: 去除空格\n- `toZhCN`: 转中文数字\n- `numberToChinese`: 数字转中文\n- `toCamelCaseVar`: 转驼峰变量\n- `toUnderlineVar`: 转下划线变量\n- `transferHumpUnderline`: 驼峰下划线互转\n\n### DOM 操作\n- `addClass`: 添加类名\n- `removeClass`: 移除类名\n- `scrollToTop`: 滚动到顶部\n- `getScrollPos`: 获取滚动位置\n- `insertAtCaret`: 在光标处插入内容\n- `getPixelRatio`: 获取设备像素比\n\n### 工具函数\n- `deepClone`: 深拷贝\n- `deepMapKeys`: 深度映射键名\n- `promisify`: Promise 化\n- `timeTaken`: 计算执行时间\n- `anagrams`: 生成字符串的所有排列组合\n- `generateGUID`: 生成唯一标识符\n- `combineURLs`: URL 组合\n- `equals`: 深度比较两个值是否相等\n\n### 数据处理\n- `merge`: 对象合并\n- `only`: 对象过滤\n- `size`: 获取对象大小\n- `dig`: 深度获取对象属性\n- `objectToPairs`: 对象转键值对数组\n- `objectFromPairs`: 键值对数组转对象\n- `mapKeys`: 映射对象键名\n- `mapValues`: 映射对象值\n\n### 文件处理\n- `photoCompress`: 图片压缩\n- `exportXls`: 导出 Excel\n- `prettyBytes`: 格式化文件大小\n- `dynamicLoadScript`: 动态加载脚本\n\n### 设备检测\n- `getDevice`: 获取设备信息\n- `isMobile`: 判断是否为移动设备\n- `isMobileStrict`: 严格判断是否为移动设备\n- `isMobileLoose`: 宽松判断是否为移动设备\n- `isPhoneX`: 判断是否为 iPhone X\n- `isLightOS`: 判断是否为轻量级操作系统\n\n### 验证工具\n- `isValidEmail`: 验证邮箱\n- `isValidPassword`: 验证密码\n- `isValidTelephone`: 验证电话号码\n- `isValidChineseName`: 验证中文姓名\n- `isValidEnglishName`: 验证英文姓名\n- `isValidBankNo`: 验证银行卡号\n- `isValidIPV4`: 验证 IPv4 地址\n- `isValidIPV6`: 验证 IPv6 地址\n- `isValidURI`: 验证 URI\n- `isValidBase64Format`: 验证 Base64 格式\n- `isValidMD5`: 验证 MD5 格式\n- `isValidSemverVersion`: 验证语义化版本号\n- `isValidSubnetMask`: 验证子网掩码\n- `isValidTestScores`: 验证考试成绩\n- `isValidZipcode`: 验证邮政编码\n- `isValidWechatID`: 验证微信号\n- `isValidQQ`: 验证 QQ 号\n- `isValidPassport`: 验证护照号\n- `isValidLicenseNo`: 验证车牌号\n- `isValidNewEnergyLicenseNo`: 验证新能源车牌号\n- `isValidUnifiedSocialCreditCode`: 验证统一社会信用代码\n- `isValidAShareCode`: 验证 A 股代码\n\n### URL 处理\n- `urlJoin`: URL 拼接\n- `getURLParameters`: 获取 URL 参数\n- `getLocationSearchParam`: 获取 URL 搜索参数\n- `getLocationHrefParam`: 获取 URL 哈希参数\n- `getUrlNames`: 获取 URL 路径名\n\n### 其他工具\n- `cookie`: Cookie 操作\n- `encrypt`: 加密工具\n- `getRandomInt`: 获取随机整数\n- `handleEmoji`: 处理表情符号\n- `isEmoji`: 判断是否为表情符号\n- `isSpecialChar`: 判断是否为特殊字符\n- `rgbToHex`: RGB 转十六进制\n- `setDocumentTitle`: 设置文档标题\n\n## 开发\n\n```bash\n# 安装依赖\npnpm install\n\n# 开发模式\npnpm dev\n\n# 构建\npnpm build\n\n# 测试\npnpm test\n\n# 文档开发\npnpm docs:dev\n\n# 文档构建\npnpm docs:build\n```\n\n## 贡献\n\n欢迎提交 Issue 和 Pull Request。\n\n## 许可证\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwinjs-dev%2Fcloud-utils","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwinjs-dev%2Fcloud-utils","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwinjs-dev%2Fcloud-utils/lists"}