npm package: @hilime/lodash-mini
Description: 一个使用 esbuild 构建的工具函数库
Author: lime
Latest version: 1.0.0

# @hilime/lodash-mini

> 一个使用 esbuild 构建的轻量级工具函数库，支持多种模块格式

## ✨ 特性

- 🚀 **快速构建** - 使用 esbuild 构建，速度极快
- 📦 **多格式支持** - 支持 ESM、CommonJS、IIFE 三种格式
- 🔧 **TypeScript 支持** - 完整的类型定义
- 🪶 **轻量级** - 打包后仅 2-3KB
- 🌳 **Tree-shaking 友好** - 支持按需导入

## 📦 安装

```bash
npm install @hilime/lodash-mini
```

## 🚀 快速开始

### ESM (推荐)

```javascript
import { isArray, chunk, debounce } from '@hilime/lodash-mini';

// 或者导入所有功能
import limeLodash from '@hilime/lodash-mini';
```

### CommonJS

```javascript
const { isArray, chunk, debounce } = require('@hilime/lodash-mini');

// 或者导入所有功能
const limeLodash = require('@hilime/lodash-mini');
```

### 浏览器 (IIFE)

```html
<script src="path/to/@hilime/lodash-mini/dist/index.iife.js"></script>
<script>
  // 全局变量 LimeLodash 可用
  console.log(LimeLodash.isArray([1, 2, 3])); // true
</script>
```

## 📚 API 文档

### 类型检查

#### `isArray(value): boolean`
检查值是否为数组

```javascript
isArray([1, 2, 3]); // true
isArray('hello'); // false
```

#### `isObject(value): boolean`
检查值是否为对象（非数组）

```javascript
isObject({}); // true
isObject([]); // false
```

#### `isEmpty(value): boolean`
检查值是否为空

```javascript
isEmpty([]); // true
isEmpty(''); // true
isEmpty({}); // true
isEmpty([1]); // false
```

### 数组操作

#### `chunk(array, size): array[]`
将数组分割成指定大小的块

```javascript
chunk([1, 2, 3, 4, 5], 2); // [[1, 2], [3, 4], [5]]
```

#### `flatten(array): array`
展平多维数组

```javascript
flatten([1, [2, 3], [4, [5]]]); // [1, 2, 3, 4, 5]
```

#### `uniq(array): array`
数组去重

```javascript
uniq([1, 2, 2, 3, 3]); // [1, 2, 3]
```

#### `groupBy(array, keyFn): object`
根据指定函数对数组元素进行分组

```javascript
const people = [
  { name: 'Alice', age: 30 },
  { name: 'Bob', age: 25 },
  { name: 'Charlie', age: 30 }
];
groupBy(people, person => person.age);
// { '25': [{ name: 'Bob', age: 25 }], '30': [{ name: 'Alice', age: 30 }, { name: 'Charlie', age: 30 }] }
```

### 对象操作

#### `pick(object, keys): object`
从对象中挑选指定的属性

```javascript
pick({ a: 1, b: 2, c: 3 }, ['a', 'c']); // { a: 1, c: 3 }
```

#### `omit(object, keys): object`
从对象中排除指定的属性

```javascript
omit({ a: 1, b: 2, c: 3 }, ['b']); // { a: 1, c: 3 }
```

#### `merge(target, ...sources): object`
深度合并对象

```javascript
merge({ a: 1, b: { x: 1 } }, { b: { y: 2 }, c: 3 }); 
// { a: 1, b: { x: 1, y: 2 }, c: 3 }
```

### 字符串操作

#### `capitalize(str): string`
首字母大写

```javascript
capitalize('hello'); // 'Hello'
```

#### `camelCase(str): string`
转换为驼峰命名

```javascript
camelCase('hello-world'); // 'helloWorld'
```

#### `kebabCase(str): string`
转换为短横线命名

```javascript
kebabCase('helloWorld'); // 'hello-world'
```

### 性能工具

#### `debounce(func, wait): function`
防抖函数

```javascript
const debouncedFn = debounce(() => {
  console.log('执行');
}, 1000);

// 在1秒内多次调用，只会执行一次
debouncedFn();
debouncedFn();
debouncedFn();
```

#### `throttle(func, wait): function`
节流函数

```javascript
const throttledFn = throttle(() => {
  console.log('执行');
}, 1000);

// 每秒最多执行一次
throttledFn();
throttledFn(); // 被忽略
```

## 🏗️ 开发

### 构建

```bash
# 构建所有格式
npm run build

# 开发模式构建（包含 sourcemap）
npm run build:dev

# 监听模式
npm run dev
```

### 测试

```bash
npm test
```

### 清理

```bash
npm run clean
```

## 📊 构建产物

- `dist/index.esm.js` - ESM 格式 (~2.3KB)
- `dist/index.cjs.js` - CommonJS 格式 (~2.8KB)  
- `dist/index.iife.js` - IIFE 格式 (~2.7KB)
- `dist/index.d.ts` - TypeScript 类型定义 (~1.5KB)

## 🤝 贡献

欢迎提交 Issue 和 Pull Request！

## 📄 许可证

MIT

## 🔗 相关链接

- [esbuild](https://esbuild.github.io/) - 超快的 JavaScript 打包工具
- [TypeScript](https://www.typescriptlang.org/) - JavaScript 的超集