tanemaki
v0.1.0
Published
日本語のリアルなテストデータを整合性つきで生成する種まきツール。氏名・住所・メール・電話番号などをseed再現性つきで生成します。
Maintainers
Readme
tanemaki 🌱
日本語のリアルなテストデータを 整合性 と 再現性(seed) つきで生成する、種まきツール。
Prisma の seed スクリプトなど、TypeScript でテストデータを大量に作りたい場面向け。氏名・住所・メール・電話番号などを、フィールド間で矛盾しない形で生成できます。
特長
- 日本語のリアルさ: 漢字氏名+ふりがな+ローマ字、郵便番号↔都道府県の整合、日本の電話番号形式。
- 整合の取れたセット:
person()の email は氏名ローマ字と一致。住所の郵便番号と都道府県が矛盾しない。 - seed再現性:
new Tanemaki({ seed: 42 })なら何回・どのマシンでも同じ結果。テスト失敗の再現やCI安定化に。 - 依存ゼロ / ESM・CJS両対応 / 型定義つき。
インストール
npm install tanemaki使い方
import { Tanemaki } from "tanemaki";
const t = new Tanemaki({ seed: 42 }); // seed省略で毎回ランダム
t.person();
// {
// lastName: "山田", firstName: "太郎",
// lastNameKana: "やまだ", firstNameKana: "たろう",
// lastNameRomaji: "yamada", firstNameRomaji: "taro",
// fullName: "山田 太郎", fullNameKana: "やまだ たろう",
// gender: "male"
// }
t.address();
// { postalCode: "150-0043", prefecture: "東京都", city: "新宿区", rest: "3-12-5", full: "東京都新宿区3-12-5" }
const p = t.person();
t.email({ person: p }); // 氏名ローマ字と整合: "[email protected]"
t.phone({ type: "mobile" }); // "090-1234-5678"Prisma seed での例
const t = new Tanemaki({ seed: 1 });
await prisma.user.createMany({
data: t.many(100, (g) => {
const p = g.person();
return {
name: p.fullName,
email: g.email({ person: p }),
phone: g.phone(),
};
}),
});API(v0.1)
| メソッド | 返り値 |
| --- | --- |
| string(length?) | ランダム英数字文字列 |
| int(min, max) | ランダム整数(両端含む) |
| bool() | boolean |
| pick(items) | 配列から1要素 |
| uuid() | UUID v4 |
| person(opts?) | 人物オブジェクト(漢字/かな/ローマ字/性別) |
| fullName(opts?) | 氏名文字列 |
| address() | 住所オブジェクト(郵便番号↔都道府県が整合) |
| postalCode() | "123-4567" |
| email(opts?) | メール(personで氏名と整合) |
| phone(opts?) | 日本の電話番号 |
| many(n, fn) | fnをn回実行して配列に |
ライセンス
MIT
