fakerjs

382 阅读5分钟

fakerjs

Github 仓库:@faker-js/faker

安装

npm install @faker-js/faker --save-dev

yarn add @faker-js/faker --dev

pnpm add @faker-js/faker --save-dev

node要求至少v14

思维导图

fakerjs.png

用法

NodeJs 端

import { faker } from '@faker-js/faker'; // or, if using CommonJS // const { faker } = require('@faker-js/faker');

const randomName = faker.name.fullName(); // Rowan Nikolaus const randomEmail = faker.internet.email(); // Kassandra.Haley@erich.biz

浏览器端

CDN / Deno

import { faker } from 'cdn.skypack.dev/@faker-js/f…';

const randomName = faker.name.findName(); // Willie Bahringer const randomEmail = faker.internet.email(); // Tomasa_Ferry14@hotmail.com

TypeScript

  • 需要检查这些compilerOptions是否在你的tsconfig文件中正确设置:

    { "compilerOptions": { "esModuleInterop": true, "moduleResolution": "Node" } }

创建复杂对象

import { faker } from '@faker-js/faker';

function createRandomUser(): User { const sex = this.faker.name.sexType(); const firstName = faker.name.firstName(sex); const lastName = faker.name.lastName(); const email = faker.internet.email(firstName, lastName);

return { _id: faker.datatype.uuid(), avatar: faker.image.avatar(), birthday: faker.date.birthdate(), email, firstName, lastName, sex, subscriptionTier: faker.helpers.arrayElement(['free', 'basic', 'business']), }; }

const user = createRandomUser();

本地化

import { faker } from '@faker-js/faker/locale/zh_CN';

Helpers

arrayElement

  • 从给定数组中返回随机元素

    • faker.helpers.arrayElement(['cat', 'dog', 'mouse']) // 'dog'

arrayElements

  • 返回一个随机元素的子集

    • faker.helpers.arrayElements(['cat', 'dog', 'mouse']) // ['mouse', 'cat']

fake

  • 组合基于静态字符串输入的 faker 方法的生成器

    • const hello = faker.helpers.fake('Hi, my name is {{name.firstName}} {{name.lastName}}!')

mustache

  • 替换给定字符串胡子样式中的{{占位符}}模式

    faker.helpers.mustache('I found {{count}} instances of "{{word}}".', { count: () => ${faker.datatype.number()}, word: "this word", }) // 'I found 57591 instances of "this word".'

regexpStyleStringParse

  • 用匹配的值替换给定字符串中的类似正则表达式

    • faker.helpers.regexpStyleStringParse('#{2,9}') // '#######'

    • faker.helpers.regexpStyleStringParse('#{3}test[1-5]') // '###test3'

    • faker.helpers.regexpStyleStringParse('[500-15000]') // '8375'

shuffle

  • 获取一个数组并在适当的位置对其进行随机化,然后返回该数组

    • faker.helpers.shuffle(['a', 'b', 'c']) // [ 'b', 'c', 'a' ]

unique

  • 使用给定方法的结果生成唯一的结果。使用过的唯一条目将在内部存储,并从后续调用中筛选

    • faker.helpers.unique(faker.name.firstName) // 'Corbin'
  • 生成唯一不可重复的东西

uniqueArray

  • 生成唯一不可重复的数组

    • faker.helpers.uniqueArray(faker.definitions.name.first_name, 6)

    • faker.helpers.uniqueArray(["Hello", "World", "Goodbye"], 2)

常用api

Address

  • faker.address.city() // => "Laruecester"

  • faker.address.cityName() // 'San Rafael'

  • faker.address.country() // 'Greece'

    • 国家
  • 返回随机本地化县

    • faker.address.county() // 'Cambridgeshire'
  • 返回此国家的随机本地化状态

    • faker.address.state() // => "Nevada"
  • 生成随机的本地化街道名称

    • faker.address.street() // 'Schroeder Isle'

Random

  • 生成由英文字母中的字母组成的字符串。

    • faker.random.alpha(10) // 'qccrabobaf'

    • faker.random.alpha({ count: 5, casing: 'upper', bannedChars: ['A'] }) // 'DTCIC'

  • 生成由字母字符和数字组成的字符串。

    • faker.random.alphaNumeric(5) // '3e5v7'

    • faker.random.alphaNumeric(5, { bannedChars: ["a"] }) // 'xszlm'

  • 生成给定长度的数字字符串。

    • faker.random.numeric(5) // '31507

    • faker.random.numeric(42, { allowLeadingZeros: true }) // '00564846278453876543517840713421451546115'

    • faker.random.numeric(6, { bannedDigits: ['0'] }) // '943228'

  • 返回随机单词。

    • faker.random.word() // => "quantify"
  • 返回包含一组随机单词的字符串。

    • faker.random.words(5) // 'copy Handcrafted bus client-server Point'

Datatype

  • 返回一个包含随机字符串和数字的数组

    • faker.datatype.array(3) // [ 61845, 'SK7H$W3:d*', 'm[%7N8*GVK' ]
  • 返回布尔值 true 或 false

    • faker.datatype.boolean() // false
  • 返回一个 Date 对象,该对象使用 Unix 时代(1970年1月1日 UTC)以来的随机毫秒数。

    • faker.datatype.datetime() // '2089-04-17T18:03:24.956Z'
  • 返回一个随机的浮点数

    • faker.datatype.float(0.1) // 52023.2

    • faker.datatype.float({ min: 10, max: 100, precision: 0.001 }) // 57.315

  • 返回一个介于零和给定最大值之间的单个随机数或具有指定精度的给定范围。界限是包容性的

    • faker.datatype.number(100) // 52

    • faker.datatype.number({ min: 10, max: 100, precision: 0.01 }) // 36.94

  • 返回一个包含33到125(! to })之间的 UTF-16字符的字符串

    • faker.datatype.string(5) // '6Bye8'
  • 返回 UUID v4

    • faker.datatype.uuid() // => "89bd9d8d-69a6-474e-8f46-7cc8796ed151"

Name

  • 生成随机全名

    • faker.name.fullName() // 'Allen Brown'

    • faker.name.fullName('Joann') // 'Joann Osinski'

    • faker.name.fullName('Marcella', '', 'female') // 'Mrs. Marcella Huels'

  • 生成随机的姓

    • faker.name.firstName() // 'Antwan'

    • faker.name.firstName('female') // 'Victoria'

  • 返回随机性别

    • faker.name.sex() // 'female'
  • 生成随机的工作领域

    • faker.name.jobArea() // => "Infrastructure"
  • 生成随机的工作描述

    • faker.name.jobDescriptor() // 'Customer'
  • 生成随机的工作职称

    • faker.name.jobTitle() // 'Global Accounts Engineer'
  • 生成随机的工作类型

    • faker.name.jobType() // => "Designer"

Internet

  • 返回随机头像 URL

    • faker.internet.avatar()
  • 在美观的调色板中生成一个随机的 css 十六进制颜色代码

    • faker.internet.color() // '#30686e'
  • 生成随机域名

    • faker.internet.domainName() // => "muddy-news.net"
  • 生成随机表情符号

    • faker.internet.emoji() // '🥰'
  • 使用一个示例邮件生成一个电子邮件地址

  • 返回一个随机的 http 方法

    • faker.internet.httpMethod() // => "PUT"
  • 产生一个随机的 HTTP状态码

    • faker.internet.httpStatusCode() // => 305
  • 生成随机 IPv4 地址

    • faker.internet.ip() // => "140.151.183.216"
  • 生成随机 mac 地址

    • faker.internet.mac() // => "89:bd:9d:8d:69:a6"
  • 生成随机密码

    • faker.internet.password() // '89G1wJuBLbGziIs'

    • faker.internet.password(20) // 'aF55c_8O9kZaPOrysFB_'

  • 生成随机端口号

    • faker.internet.port() // => 35967
  • 返回一个随机的网络协议

    • faker.internet.protocol() // 'http'
  • 生成一个随机 URL

  • 生成随机用户代理字符串

    • faker.internet.userAgent() // => "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT...
  • 使用给定人员的名称作为基础生成用户名。

    • faker.internet.userName() // 'Nettie_Zboncak40'

    • faker.internet.userName('Jeanne', 'Doe') // 'Jeanne98'

Phone

  • 生成随机电话号码

    • faker.phone.number() // '961-770-7727'

    • faker.phone.number('501-###-###') // '501-039-841'

    • faker.phone.number('+48 91 ### ## ##') // '+48 91 463 61 70'

  • 生成 IMEI 号码

    • faker.phone.imei() // '13-850175-913761-7'

System

  • 常见文件扩展

    • faker.system.commonFileName() // 'dollar.jpg'
  • 常用文件名

    • faker.system.commonFileName('txt') // 'global_borders_wyoming.txt'

    • faker.system.commonFileExt()

  • 文件路径

    • faker.system.directoryPath() // '/etc/mail'
  • 版本号

    • faker.system.semver() // '1.1.2'

Animal

Color

Mersenne

  • 在[ min,max)之间生成一个随机数

    • faker.mersenne.rand(1000, 500) // 578

Lorem

  • 生成以’n’分隔的给定 lorem 数行

    • faker.lorem.lines()
  • 生成至少具有给定句子数的段落。

    • faker.lorem.paragraph() // 'Animi possimus nemo consequuntur ut ea et tempore unde qui. Quis corporis esse occaecati.'
  • 生成以大写字母开头、以点结尾的空格分隔的单词列表。

    • faker.lorem.sentence() // 'Voluptatum cupiditate suscipit autem eveniet aut dolorem aut officiis distinctio.'

Image

Finance金融

  • 生成随机帐号

    • faker.finance.account() // => "55786858"
  • 生成随机帐户名称

    • faker.finance.accountName() // => "Home Loan Account"
  • 在给定的界限(包括)之间生成随机数

    • faker.finance.amount(5, 10, 2, ')//') // '5.85'

Fake

  • const hello = faker.fake('Hi, my name is {{name.firstName}} {{name.lastName}}!')

  • const message = faker.fake(`You can call me at {{phone.number(+!# !## #### #####!)}}.')

Date

  • 在给定的边界之间生成一个随机日期

    • faker.date.between('2020-01-01T00:00:00.000Z', '2030-01-01T00:00:00.000Z') // '2026-05-16T02:22:53.002Z'
  • 在给定的边界之间生成 n 个随机日期

    • faker.date.betweens('2020-01-01T00:00:00.000Z', '2030-01-01T00:00:00.000Z', 2)

    • // [ 2023-05-02T16:00:00.000Z, 2026-09-01T08:00:00.000Z ]

  • 返回随机出生日期

    • faker.date.birthdate() // => "1976-07-29T02:25:31.672Z"

    • faker.date.birthdate({ min: 18, max: 65, mode: 'age' }) // 2003-11-02T20:03:20.116Z

    • faker.date.birthdate({ min: 1900, max: 2000, mode: 'year' }) // 1940-08-20T08:53:07.538Z

  • 生成未来的随机日期

    • faker.date.future(10) // '2030-11-23T09:38:28.710Z'
  • 返回一个月的随机名称

    • faker.date.month() // 'October'

    • faker.date.month({ abbr: true }) // 'Feb'

  • 生成过去的随机日期

    • faker.date.past(10) // '2017-10-25T21:34:19.488Z'
  • 返回一周中随机的一天

    • faker.date.weekday() // => "Wednesday"