@base-web-kits/base-tools-web

中文文档
2.1.4发布于 2026/11/02MITTypeScriptESM + CJS近 30 天下载 2167

Independent Web utilities package built from src/web.

原始使用文档
文档目录9 节
  1. 📖 在线文档
  2. 🚀 快速开始
  3. 安装
  4. 使用
  5. 普通h5
  6. 🤖 AI 智能助手 (Skill)
  7. 验证生效
  8. 兼容性
  9. 配置 Polyfill

Base Tools

Web前端团队常用工具库,包含ts、web、react、vue、uni模块。

📖 在线文档

https://gancao-web.github.io/base-tools/

🚀 快速开始

安装

  • 按需安装即可
  • 非ts环境和普通h5也能使用,因为所有函数已编译为es5
// 通用TS/JS模块
npm i @base-web-kits/base-tools-ts

// Web 模块
npm i @base-web-kits/base-tools-web

// Uni 模块
npm i @base-web-kits/base-tools-uni

// React 模块
npm i @base-web-kits/base-tools-react

// Vue 模块
npm i @base-web-kits/base-tools-vue

使用

// 通用TS/JS模块
import { toDayjs, getUrlParam, toMaskPhone } from '@base-web-kits/base-tools-ts';

// Web 模块
import { copyText, isPC, setCookie } from '@base-web-kits/base-tools-web';

// React 模块
import { useCountDown } from '@base-web-kits/base-tools-react';

// Vue 模块
import { useResizeObserver } from '@base-web-kits/base-tools-vue';

// Uni 模块
import { setBaseToolsConfig, chooseMedia, toPayWx } from '@base-web-kits/base-tools-uni';

setBaseToolsConfig({
  pathHome: '/pages/tabbar/home/index',
  pathLogin: '/pages/login/index',
  pathWebview: '/pages/webview/index',
  hostFile: 'https://xx.com/',
  hostIcon: 'https://xx.com/xx/',
  isTabBar: (url) => url.startsWith('/pages/tabbar/'),
  isLogin: () => useUserStore().isLogin,
  log: (level, data) => console.log({ level, data }),
});

普通h5

<!DOCTYPE html>
<html>
  <head>
    <title>Base Tools 示例</title>
  </head>
  <body>
    <script src="https://cdn.jsdelivr.net/npm/@base-web-kits/[email protected]/dist/base-tools-ts.umd.global.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/@base-web-kits/[email protected]/dist/base-tools-web.umd.global.js"></script>

    <script>
      // 使用 base-tools-ts 中的函数
      const { createTimeRandId, EventBus } = baseToolsTS;

      // 使用 base-tools-web 中的函数
      const { getCookie, setCookie } = baseToolsWeb;

      // 示例:创建随机ID
      const id = createTimeRandId();
      console.log('随机ID:', id);

      // 示例:使用EventBus
      const emitter = new EventBus();
      emitter.on('test', (data) => {
        console.log('收到事件:', data);
      });
      emitter.emit('test', 'Hello World!');

      // 示例:操作Cookie
      setCookie('name', 'Base Tools', 7);
      const name = getCookie('name');
      console.log('Cookie值:', name);
    </script>
  </body>
</html>

🤖 AI 智能助手 (Skill)

本项目提供了强大的 AI Skill,可让 Cursor、Trae、Claude Code 等 AI 助手深度理解 @base-web-kits 的能力,为您精准推荐最佳实践函数,并自动处理依赖安装。

方式一:随 TS 包使用

大多数项目会安装 @base-web-kits/base-tools-ts。从1.5.0起,该 npm 包内置了与当前版本匹配的 Agent Skill,安装或升级后会同步更新。请将以下规则加到项目的 AGENTS.md:

- 新增或选用可跨业务复用的 TS/JS 工具、浏览器与 H5 能力、React Hooks、Vue 组合式函数、uni-app 能力或公共类型前,读取 `node_modules/@base-web-kits/base-tools-ts/skill/SKILL.md`,检索已有能力;业务专属逻辑和领域类型不触发。

方式二:单独安装 Skill

若项目没有安装 @base-web-kits/base-tools-ts,可单独安装skill:

npx skills add gancao-web/base-tools

验证生效

安装完成后,可以在对话框中输入以下问题进行测试。如果 AI 推荐了 @base-web-kits 下的相关包或函数,说明配置已生效。

测试场景推荐提问预期 AI 回答
JS工具库"我需要深拷贝一个对象,请编写或推荐一个函数"推荐使用 base-tools-ts 的 cloneDeep
JS正则验证"我需要校验邮箱格式,请编写或推荐一个函数"推荐使用 base-tools-ts 的 isEmail
通用web"我需要复制文本到剪贴板,请编写或推荐一个函数"推荐使用 base-tools-web 的 copyText
React项目"我需要监听dom元素的尺寸变化,请编写或推荐一个函数"推荐使用 base-tools-react 的 useSize
Vue项目"我需要监听元素外部点击事件,请编写或推荐一个函数"推荐使用 base-tools-vue 的 onClickOutside
UniApp项目"我需要保存网络图片到系统相册,请编写或推荐一个函数"推荐使用 base-tools-uni 的 saveImageToPhotosAlbum 函数

兼容性

本工具库和相关依赖可能涉及的新特性及其最低兼容版本:

特性ES 版本最低兼容版本 (Browser/OS)
Object.values / entriesES2017Chrome 54+, iOS 10.3+, Android 7.0+
String.prototype.padStart / padEndES2017Chrome 57+, iOS 10.3+, Android 8.0+
Object.getOwnPropertyDescriptorsES2017Chrome 54+, iOS 10.3+, Android 7.0+
Promise.prototype.finallyES2018Chrome 63+, iOS 11.3+, Android 9.0+
Symbol.asyncIteratorES2018Chrome 63+, iOS 12.0+, Android 9.0+
Object.fromEntriesES2019Chrome 73+, iOS 12.2+, Android 10+
Array.prototype.flat / flatMapES2019Chrome 69+, iOS 12.0+, Android 9.0+
String.prototype.trimStart / trimEndES2019Chrome 66+, iOS 12.0+, Android 9.0+
?? / ?.ES2020Chrome 80+, iOS 13.4+, Android 10+
Promise.allSettledES2020Chrome 76+, iOS 13.0+, Android 10+
String.prototype.matchAllES2020Chrome 80+, iOS 13.0+, Android 10+
BigIntES2020Chrome 67+, iOS 14.0+, Android 11+
globalThisES2020Chrome 71+, iOS 12.2+, Android 9.0+
String.prototype.replaceAllES2021Chrome 85+, iOS 13.4+, Android 11+
Promise.anyES2021Chrome 85+, iOS 14.0+, Android 11+
WeakRef / FinalizationRegistryES2021Chrome 84+, iOS 14.5+, Android 11+
Array/String.prototype.atES2022Chrome 92+, iOS 15.4+, Android 12+
Error.prototype.causeES2022Chrome 93+, iOS 15.0+, Android 12+
Object.hasOwnES2022Chrome 93+, iOS 15.4+, Android 12+

本工具库构建目标为 ES2015+。但不内置 Polyfill, 如需支持低版本浏览器, 请务必在项目中配置 Polyfill。

配置 Polyfill

以 Vite 项目为例, 使用 @vitejs/plugin-legacy 插件自动按需注入 Polyfill。

// vite.config.ts
import legacy from '@vitejs/plugin-legacy'; // 安装命令: npm install -D @vitejs/plugin-legacy

export default {
  plugins: [
    legacy({
      // 与antd4兼容性对齐 https://4x-ant-design.antgroup.com/docs/react/introduce-cn
      // targets: ['defaults', 'not IE 11'],

      // 与vant4兼容性对齐 https://vant4.ylhtest.com/#/zh-CN/home
      // targets: ['chrome >= 51', 'android >= 5', 'ios >= 10'],

      // 与Element对齐: https://element-plus.org/zh-CN/guide/installation
      targets: ['Chrome >= 64', 'Edge >= 79', 'Firefox >= 78', 'Safari >= 12', 'not IE 11'],

      // 按需自动引入polyfill (需使用vite3以上版本,因为vite2.x缺少新的ES特性,如Object.hasOwn)
      modernPolyfills: true,
    }),
  ],
};

版本与发布记录

@base-web-kits/base-tools-web 共发布 104 个版本,首次发布于 2025/11/13;过去 12 个月发布了 104 个版本。

版本发布日期距今
2.1.4latest2026/11/026 天前
2.1.32026/11/026 天前
2.1.22026/11/026 天前
2.1.12026/10/309 天前
2.1.02026/10/309 天前
2.0.22026/10/2910 天前

其他发布通道:alpha → 1.2.0-alpha.0。

关于 @base-web-kits/base-tools-web 的常见问题

@base-web-kits/base-tools-web 是什么?

Independent Web utilities package built from src/web.

如何安装 @base-web-kits/base-tools-web?

在项目目录运行 npm install @base-web-kits/base-tools-web,或使用 pnpm add / yarn add / bun add。

@base-web-kits/base-tools-web 支持 TypeScript 吗?

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

@base-web-kits/base-tools-web 支持 ESM 还是 CommonJS?

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

@base-web-kits/base-tools-web 可以商用吗?

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

@base-web-kits/base-tools-web 的下载量有多少?

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

@base-web-kits/base-tools-web 还在维护吗?

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