# userdir 一个简单的跨平台获取用户主目录的工具 [![NPM version][npm-image]][npm-url] [![npm download][download-image]][download-url] [![License][license-image]][license-url]
### **[更新日志](./CHANGELOG.md)** · **[English](./README.md)**
## 安装 ```bash # use pnpm $ pnpm install userdir # use npm $ npm install userdir # use yarn $ yarn add userdir ``` ## 环境要求 - Node.js >= 18 ## 使用 ### 基本用法 ```js import userdir from 'userdir' userdir() // /Users/username ``` ### 使用选项 ```js import { userdir, userdirAsync, clearCache } from 'userdir' // 路径验证 userdir({ validate: true }) // 路径不存在则返回 null // 禁用缓存 userdir({ cache: false }) // 异步版本 await userdirAsync() // 清除缓存 clearCache() ``` ### 选项 ```typescript interface UserdirOptions { /** 是否使用缓存(默认:true) */ cache?: boolean /** 自定义环境变量(用于测试) */ env?: typeof process.env /** 验证目录是否存在(默认:false) */ validate?: boolean } ``` ## API ### `userdir(options?)` 同步获取用户主目录。 - **返回值**: `string | null` - 用户主目录路径,未找到则返回 null ### `userdirAsync(options?)` 异步获取用户主目录。 - **返回值**: `Promise` ### `clearCache()` 清除内部缓存。 ### 默认导出 默认导出优先使用 `os.homedir()`,不可用时回退到 `userdir()`。 ## 从 v1.0 迁移到 v1.1 ### Node.js 版本 v1.1 需要 Node.js >= 18。如需支持旧版本,请使用 v1.0。 ### 导入变化 默认导出行为不变。新增命名导出: ```js // v1.0 import userdir from 'userdir' // v1.1 - 和之前一样 import userdir from 'userdir' // v1.1 - 新的命名导出 import { userdir, userdirAsync, clearCache } from 'userdir' ``` ### 新功能 ```js // 路径验证(路径不存在返回 null) userdir({ validate: true }) // 禁用缓存 userdir({ cache: false }) // 异步 API await userdirAsync() // 手动清除缓存 clearCache() ``` ### 移除的依赖 v1.1 不再依赖 `core-js` 或 `js-cool`。如果你的项目依赖这些包,请直接安装。 ### 构建输出 | v1.0 | v1.1 | |------|------| | `dist/index.mjs` | `dist/index.js` | | `dist/index.cjs` | `dist/index.cjs` | ## 支持与问题 请在[这里](https://github.com/saqqdy/userdir/issues)提交问题。 ## 许可证 [MIT](LICENSE) [npm-image]: https://img.shields.io/npm/v/userdir.svg?style=flat-square [npm-url]: https://npmjs.org/package/userdir [download-image]: https://img.shields.io/npm/dm/userdir.svg?style=flat-square [download-url]: https://npmjs.org/package/userdir [license-image]: https://img.shields.io/badge/License-MIT-blue.svg [license-url]: LICENSE