一个功能强大的多语言随机姓名和昵称生成器,支持生成各种类型的随机名称。
- 🎯 随机昵称生成 - 生成有趣的随机昵称
- 👨👩👧👦 姓名生成 - 支持男性、女性和通用姓名生成
- 🏮 中文支持 - 完全支持中文姓氏和名字
- 📚 丰富词库 - 包含大量的形容词、名词和姓氏数据
- 🔧 灵活配置 - 支持单姓和复姓选择
- 📦 轻量级 - 无外部依赖,体积小巧
- 🔷 TypeScript 支持 - 完整的类型定义和接口支持
- 🌐 多模块格式 - 支持 ESM、CJS、UMD 多种模块格式
- 🎨 多种风格 - 支持传统、现代、文艺、古风等多种姓名风格
- 😊 昵称风格 - 支持可爱、搞笑、网络、霸气、清新、二次元等昵称风格
- 🛠️ 自定义配置 - 支持添加自定义姓氏、名字和昵称数据
- 📊 批量生成 - 支持批量生成姓名和昵称
- 🌍 多语言支持 - 支持中文、英文、日语、韩语等多种语言昵称
pnpm install wg-random-nameimport randomName, {
RandomName,
IRandomName,
NameStyle,
NickStyle,
Language,
CustomConfig,
} from "wg-random-name";
// 使用默认实例
console.log(randomName.getNickName()); // 输出: "快乐的小猫咪"
console.log(randomName.getName()); // 输出: "张伟强"
// 创建新实例
const generator: RandomName = new RandomName();
console.log(generator.getFemaleName()); // 输出: "李美丽"
// 使用接口类型
const nameGenerator: IRandomName = new RandomName();
const nickname: string = nameGenerator.getNickName();
// 使用风格化生成
console.log(randomName.getNickName(NickStyle.CUTE)); // 输出: "萌萌的小兔子"
console.log(randomName.getName(true, NameStyle.CLASSICAL)); // 输出: "司马若汐"
console.log(randomName.getMaleName(true, NameStyle.MODERN)); // 输出: "李浩然"
// 多语言昵称生成
console.log(randomName.getNickName(NickStyle.CUTE, Language.ENGLISH)); // 输出: "AdorableKitten"
console.log(randomName.getNickName(NickStyle.COOL, Language.JAPANESE)); // 输出: "つよいせんし"
console.log(randomName.getNickName(NickStyle.FUNNY, Language.KOREAN)); // 输出: "바보같은원숭이"
// 批量生成
const names = randomName.generateNames(5, {
gender: "female",
style: NameStyle.LITERARY,
});
console.log(names); // 输出: ["王诗雅", "张书瑶", "李墨兰", "陈文静", "刘诗韵"]
const nicknames = randomName.generateNickNames(3, NickStyle.FUNNY);
console.log(nicknames); // 输出: ["搞笑的逗比", "幽默的沙雕", "滑稽的憨憨"]
// 多语言批量生成昵称
const englishNicks = randomName.generateNickNames(
3,
NickStyle.COOL,
Language.ENGLISH
);
console.log(englishNicks); // 输出: ["EpicWarrior", "LegendaryKing", "UltimateHero"]import randomName, { RandomName } from "wg-random-name";
// 使用默认实例
console.log(randomName.getNickName()); // 输出: "快乐的小猫咪"
console.log(randomName.getName()); // 输出: "张伟强"
// 创建新实例
const generator = new RandomName();
console.log(generator.getFemaleName()); // 输出: "李美丽"const randomName = require("wg-random-name").default;
const { RandomName } = require("wg-random-name");
console.log(randomName.getMaleName()); // 输出: "王建国"<!-- 通过 CDN 引入 -->
<script src="https://unpkg.com/wg-random-name/dist/index.umd.js"></script>
<!-- 或者本地引入 -->
<script src="path/to/wg-random-name/dist/index.umd.js"></script>
<script>
// 全局变量 RandomNameGenerator 可用
const randomName = new RandomNameGenerator.RandomName();
console.log("随机昵称:", randomName.getNickName());
console.log("随机姓名:", randomName.getName());
console.log("男性姓名:", randomName.getMaleName());
console.log("女性姓名:", randomName.getFemaleName());
// 也可以使用默认导出的实例
console.log("默认实例:", RandomNameGenerator.default.getNickName());
</script>import {
RandomName,
NameStyle,
NickStyle,
Language,
CustomConfig,
} from "wg-random-name";
// 创建自定义配置
const customConfig: CustomConfig = {
customFamilyNames: ["欧阳", "司马", "上官", "东方"],
customGivenNames: ["星辰", "月影", "风华", "雪莲"],
customNickHeaders: ["超级", "终极", "无敌", "神级"],
customNickFoots: ["大师", "专家", "达人", "高手"],
language: Language.CHINESE, // 设置默认语言
mixWithDefault: true, // 与默认数据混合使用
};
// 使用自定义配置创建生成器
const customGenerator = new RandomName(customConfig);
console.log(customGenerator.getName()); // 可能输出: "欧阳星辰"
console.log(customGenerator.getNickName()); // 可能输出: "超级大师"
// 动态添加自定义数据
const generator = new RandomName();
generator.addCustomData({
customFamilyNames: ["慕容", "轩辕"],
nameStyle: NameStyle.CLASSICAL,
language: Language.ENGLISH, // 设置默认语言为英文
mixWithDefault: false, // 仅使用自定义数据
});
console.log(generator.getName()); // 输出自定义姓氏的名字
console.log(generator.getNickName()); // 输出英文昵称
// 重置为默认配置
generator.resetToDefault();
// 获取可用的选项列表
const options = generator.getAvailableOptions();
console.log(options.nameStyles); // ['traditional', 'modern', 'literary', 'classical']
console.log(options.nickStyles); // ['cute', 'funny', 'internet', 'cool', 'fresh', 'anime']
console.log(options.languages); // ['zh', 'en', 'ja', 'ko']姓名风格枚举,定义了不同的姓名生成风格。
enum NameStyle {
TRADITIONAL = "traditional", // 传统正式
MODERN = "modern", // 现代时尚
LITERARY = "literary", // 文艺清新
CLASSICAL = "classical", // 古风雅致
}昵称风格枚举,定义了不同的昵称生成风格。
enum NickStyle {
CUTE = "cute", // 俏皮可爱
FUNNY = "funny", // 风趣幽默
INTERNET = "internet", // 网络流行
COOL = "cool", // 霸气威武
FRESH = "fresh", // 文艺小清新
ANIME = "anime", // 二次元
}支持的语言枚举,定义了可用的语言选项。
enum Language {
CHINESE = "zh", // 中文
ENGLISH = "en", // 英文
JAPANESE = "ja", // 日语
KOREAN = "ko", // 韩语
}自定义配置接口,用于定制生成器的行为。
interface CustomConfig {
customFamilyNames?: string[]; // 自定义姓氏列表
customGivenNames?: string[]; // 自定义名字列表
customNickHeaders?: string[]; // 自定义昵称前缀
customNickFoots?: string[]; // 自定义昵称后缀
nameStyle?: NameStyle; // 姓名风格
nickStyle?: NickStyle; // 昵称风格
language?: Language; // 默认语言设置
mixWithDefault?: boolean; // 是否混合使用自定义和默认数据
}TypeScript 接口定义,描述了随机姓名生成器的契约。
interface IRandomName {
nickHeader: string[];
nickFoot: string[];
femaleNameItems: string[];
maleNameItems: string[];
familyNameItemsSin: string[];
familyNameItemsSur: string[];
allName: string[];
familyNameItemsAll: string[];
getNickHeader(style?: NickStyle, language?: Language): string;
getNickFoot(style?: NickStyle, language?: Language): string;
getNickName(style?: NickStyle, language?: Language): string;
getFamilyName(sur?: boolean): string;
getFemaleName(sur?: boolean, style?: NameStyle): string;
getMaleName(sur?: boolean, style?: NameStyle): string;
getName(sur?: boolean, style?: NameStyle): string;
generateNames(count: number, options?: GenerateOptions): string[];
generateNickNames(
count: number,
style?: NickStyle,
language?: Language
): string[];
addCustomData(config: CustomConfig): void;
resetToDefault(): void;
getConfig(): CustomConfig;
getAvailableOptions(): {
nameStyles: NameStyle[];
nickStyles: NickStyle[];
languages: Language[];
};
}实现了 IRandomName 接口的具体类。
constructor(config?: CustomConfig)创建 RandomName 实例,可选择传入自定义配置。
// 使用默认配置
const generator1 = new RandomName();
// 使用自定义配置
const generator2 = new RandomName({
customFamilyNames: ["欧阳", "司马"],
nameStyle: NameStyle.CLASSICAL,
mixWithDefault: true,
});生成随机昵称,由形容词前缀和名词后缀组成。
style(可选): 昵称风格language(可选): 语言设置
randomName.getNickName(); // "温柔的小兔子"
randomName.getNickName(NickStyle.CUTE); // "萌萌的小猫咪"
randomName.getNickName(NickStyle.COOL); // "霸气的战神"
randomName.getNickName(NickStyle.CUTE, Language.ENGLISH); // "AdorableKitten"
randomName.getNickName(NickStyle.COOL, Language.JAPANESE); // "つよいせんし"生成随机姓名(不区分性别)。
sur(可选): 是否包含复姓,默认为truestyle(可选): 姓名风格
randomName.getName(); // "欧阳明华" (包含复姓)
randomName.getName(false); // "李明" (仅单姓)
randomName.getName(true, NameStyle.CLASSICAL); // "司马若汐"生成随机女性姓名。
sur(可选): 是否包含复姓,默认为truestyle(可选): 姓名风格
randomName.getFemaleName(); // "司马婉儿"
randomName.getFemaleName(false); // "王美丽"
randomName.getFemaleName(true, NameStyle.MODERN); // "李梓涵"生成随机男性姓名。
sur(可选): 是否包含复姓,默认为truestyle(可选): 姓名风格
randomName.getMaleName(); // "诸葛亮明"
randomName.getMaleName(false); // "张伟"
randomName.getMaleName(true, NameStyle.LITERARY); // "王墨轩"批量生成姓名。
count: 生成数量options(可选): 生成选项gender: 性别 ('male' | 'female' | 'mixed'),默认 'mixed'sur: 是否包含复姓,默认truestyle: 姓名风格
randomName.generateNames(5); // 生成5个混合性别的姓名
randomName.generateNames(3, { gender: "female", style: NameStyle.CLASSICAL });
// 生成3个古风女性姓名: ["司马若汐", "欧阳清歌", "上官慕雪"]批量生成昵称。
count: 生成数量style(可选): 昵称风格language(可选): 语言设置
randomName.generateNickNames(5); // 生成5个随机昵称
randomName.generateNickNames(3, NickStyle.FUNNY);
// 生成3个搞笑昵称: ["搞笑的逗比", "幽默的沙雕", "滑稽的憨憨"]
randomName.generateNickNames(3, NickStyle.COOL, Language.ENGLISH);
// 生成3个英文霸气昵称: ["EpicWarrior", "LegendaryKing", "UltimateHero"]添加自定义数据配置。
randomName.addCustomData({
customFamilyNames: ["慕容", "轩辕"],
customGivenNames: ["星辰", "月影"],
mixWithDefault: true,
});重置为默认配置,清除所有自定义数据。
randomName.resetToDefault();获取当前的自定义配置。
const config = randomName.getConfig();
console.log(config); // 当前配置对象获取所有可用的选项列表。
const options = randomName.getAvailableOptions();
console.log(options.nameStyles); // ['traditional', 'modern', 'literary', 'classical']
console.log(options.nickStyles); // ['cute', 'funny', 'internet', 'cool', 'fresh', 'anime']
console.log(options.languages); // ['zh', 'en', 'ja', 'ko']获取随机姓氏。
sur(可选): 是否包含复姓,默认为true
randomName.getFamilyName(); // "欧阳"
randomName.getFamilyName(false); // "李"获取随机昵称前缀(形容词)。
randomName.getNickHeader(); // "快乐的"获取随机昵称后缀(名词)。
randomName.getNickFoot(); // "小猫咪"import { RandomName, IRandomName } from "wg-random-name";
class CustomNameGenerator extends RandomName {
// 可以扩展或重写方法
public getCustomName(): string {
return `${this.getNickHeader()}${this.getFamilyName(false)}`;
}
// 生成指定数量的姓名
public generateNames(
count: number,
includeCompoundSurname: boolean = true
): string[] {
const names: string[] = [];
for (let i = 0; i < count; i++) {
names.push(this.getName(includeCompoundSurname));
}
return names;
}
}
const customGenerator: CustomNameGenerator = new CustomNameGenerator();
console.log(customGenerator.getCustomName()); // "快乐的张"
const names: string[] = customGenerator.generateNames(5, false);
console.log("生成的姓名:", names);ISC License
欢迎提交 Issue 和 Pull Request!