快速上手指南:安装、模块体系与首个假数据应用)
Fakerfaker-js/faker快速上手指南安装、模块体系与首个假数据应用【免费下载链接】fakerGenerate massive amounts of fake data in the browser and node.js项目地址: https://gitcode.com/GitHub_Trending/faker/fakerFaker 是一个用于生成大量看似真实假数据的 JavaScript 库能够在浏览器与 Node.js 环境中运行。本指南以官方 Getting Started 文档为核心系统讲解 Faker 的适用场景、环境要求、安装方式、模块体系与基本用法并结合当前仓库的源码与测试帮助你在单元测试、性能测试、Demo 构建等场景中快速落地 Faker。什么是 FakerFaker 是一个流行的假数据生成库它生成的是合理但不真实的数据fake but reasonable data主要用于以下场景单元测试Unit Testing为被测函数提供稳定、多样的输入数据性能测试Performance Testing批量制造大规模数据用于压测构建演示Building Demos快速填充原型界面所需的数据后端未完成时Working without a completed backend在前后端并行开发时用假数据先行驱动前端开发。Faker 最初用 Perl 编写本仓库是其 JavaScript 移植版本此外它还被移植到了 Ruby、Java、Python 等语言。本指南只覆盖 JavaScript 实现即faker-js/faker包。从当前仓库的 package.json 可以看到该包当前版本为10.6.0描述为 Generate massive amounts of fake contextual data采用 ESM 模块格式type: module并声明sideEffects: false以支持更好的 Tree Shaking。运行环境要求Faker 可以运行在浏览器或Node.js中。根据 package.json 中engines字段的声明Node.js^22.13.0 || ^23.5.0 || 24.0.0文档同时注明 Faker v11.0 要求 Node.js 22 以上npm10包管理器官方推荐使用pnpm仓库packageManager字段声明为pnpm11.25.0。此外Faker 也可以直接通过 CDN 在浏览器控制台、Deno 等环境中以 ESM 方式导入使用详见下文浏览器与 CDN一节。安装Faker 通常只用于开发与测试阶段因此官方推荐将其安装为开发依赖Dev Dependency。以下是四种包管理器的安装命令::: code-groupnpm install faker-js/faker --save-devpnpm add faker-js/faker --save-devyarn add faker-js/faker --devdeno add --dev faker-js/faker:::安装完成后通过包的exports字段见 package.json可以确认包对外暴露的入口主入口../dist/index.js类型声明./dist/index.d.ts按需导入的./locale/*子路径./dist/locale/*.js用于按语言加载 locale 数据以减小打包体积。Faker 模块体系Faker 的 API 由三种类型的模块Modules组成完整导出清单见 src/index.ts基础数据类型模块Basic datatypes如datatype、date、number、string负责生成数字、字符串、日期等通用类型主题领域模块Topic specific modules如animal、food以及更多领域负责生成与具体业务主题相关的数据工具模块helpers即helpers模块提供各种工具方法用于组合你自己的数据或组合其他 Faker 方法产出的数据。在 Faker 主类 的源码中可以看到全部 26 个实例化模块除上述四类外还包括airline、animal、book、color、commerce、company、database、finance、food、git、hacker、image、internet、location、lorem、medical、music、person、phone、science、system、vehicle、word等每个模块都挂载在faker实例上例如faker.person.firstName()、faker.internet.email()。SimpleFaker与Faker的区别除了完整版Faker包还导出了轻量级的SimpleFaker。SimpleFaker不依赖任何 locale 数据仅包含datatype、date不含month/weekday、helpers不含fake、location仅latitude/longitude/nearbyGPSCoordinate、number、string六个模块适合只需要 UUID、随机数字等无语言依赖数据的场景详见下文轻量方案simpleFaker。在 src/index.ts 中simpleFaker与SimpleFaker均作为公开导出。快速上手生成第一个假数据Node.jsESM / CJS在 Node.js 中使用 Faker 只需从faker-js/faker导入即可更完整示例见 Usage Guideimport { faker } from faker-js/faker; // 或若需要其他语言版本 // import { fakerDE as faker } from faker-js/faker; const randomName faker.person.fullName(); // Rowan Nikolaus const randomEmail faker.internet.email(); // Kassandra.Haleyerich.bizconst { faker } require(faker-js/faker); // 或若需要其他语言版本 // const { fakerDE: faker } require(faker-js/faker); const randomName faker.person.fullName(); // Rowan Nikolaus const randomEmail faker.internet.email(); // Kassandra.Haleyerich.biz组合多个模块可以快速构造一个完整的随机用户对象示例来自 README.mdimport { faker } from faker-js/faker; export function createRandomUser() { return { userId: faker.string.uuid(), username: faker.internet.username(), email: faker.internet.email(), avatar: faker.image.avatar(), password: faker.internet.password(), birthdate: faker.date.birthdate(), registeredAt: faker.date.past(), }; } export const users faker.helpers.multiple(createRandomUser, { count: 5, });浏览器与 CDN想快速体验 Faker可以直接在浏览器控制台Ctrl Shift J/F12中通过 CDN 加载const { faker } await import(https://esm.sh/faker-js/faker); const randomName faker.person.fullName(); // Amber Keebler const randomEmail faker.internet.email(); // Norma13hotmail.com或者创建一个简单的 HTML 文件并用浏览器打开完整示例见 usage.mdscript typemodule import { faker } from https://esm.sh/faker-js/faker; const randomName faker.person.fullName(); const randomEmail faker.internet.email(); document.getElementById(name).value randomName; document.getElementById(email).value randomEmail; /script input idname / input idemail /注意浏览器环境非常适合做实验但 Faker 包含了大量用于生成假数据的字符串压缩后体积超过 5 MiB属于体积较大的包请避免将完整包直接部署到线上 Web 应用中。在 Deno 中同样通过 CDN 导入官方强烈建议使用版本标签锁定版本例如import { faker } from https://esm.sh/faker-js/fakerv10.6.0;备选 CDN 链接esmhttps://cdn.jsdelivr.net/npm/faker-js/faker/esmcjshttps://cdn.jsdelivr.net/npm/faker-js/fakerTypeScript 配置官方假定使用者开启 TypeScript strict 模式。要在 TypeScript 项目中正确使用 Faker请确保tsconfig.json的compilerOptions配置如下::: code-group{ compilerOptions: { moduleResolution: Bundler, // 或 Node10、Node16、Node20、NodeNext strict: true // 可选但推荐 } }{ compilerOptions: { moduleResolution: Bundler, // 或 Node20、NodeNext strict: true // 可选但推荐 } }:::可复现结果seed 与参考日期默认情况下Faker 每次调用都会给出不同的随机值faker.music.genre(); // Soul faker.music.genre(); // Reggae如果需要一致的结果可以设置自己的种子seedfaker.seed(123); const firstRandom faker.number.int(); // 再次设置相同种子会重置随机序列 faker.seed(123); const secondRandom faker.number.int(); console.log(firstRandom secondRandom); // true从源码看seed()方法 支持传入number或number[]数组种子调用后会写入底层 randomizer默认是基于 Mersenne Twister 的伪随机数生成器见 core.ts 中的generateMersenne53Randomizer()不传参时则生成随机种子并返回便于在测试中打印日志复现。若想自定义随机数来源可以实现 Randomizer 接口next()与seed()两个方法并通过new Faker({ randomizer })注入。关于升级的提醒升级 Faker 版本后同一个 seed 可能产生不同的值因为底层数据姓名、单词等列表可能发生了变化。相对日期需要固定参考时间有一批方法使用相对日期如faker.date.past、faker.date.future、faker.date.recent、faker.date.soon、faker.git.commitEntry、faker.string.uuid({ version: 7 })仅设置 seed 不足以得到可复现结果——因为它们默认基于今天生成日期而今天取决于代码运行时刻。解决方法是传入固定的参考日期// 创建一个 2023-01-01 之后不久的时间 faker.date.soon({ refDate: 2023-01-01T00:00:00.000Z });或为所有此类方法统一设置默认参考日期// 影响之后所有的 faker.date.* 调用 faker.setDefaultRefDate(2023-01-01T00:00:00.000Z);setDefaultRefDate见 simple-faker.ts还支持传入Date、number或返回Date的函数例如每次调用时间前进 1 秒的时钟效果对应的配置项defaultRefDate定义在 config.ts 中默认值为() new Date()。轻量方案simpleFaker如果只需要生成不依赖语言数据的值如 UUID、随机数字simpleFaker是更轻量的选择。它不包含任何 locale 数据可避免加载至少 500KB 的 locale 数据import { simpleFaker } from faker-js/faker; const uuid simpleFaker.string.uuid();更多关于SimpleFaker的 API 可参考 src/simple-faker.ts 及其单测 test/simple-faker.spec.ts。本地化Locale支持包默认导出的faker实例使用英语 localefakerEN见 src/index.ts。仓库在 src/locale/index.ts 中为 70 余种语言/地区预构建了独立的 faker 实例如fakerDE、fakerFR、fakerZH_CN等可以按需导入import { fakerDE as faker } from faker-js/faker;需要注意并非每种 locale 都为所有模块提供数据。预置实例在某个模块数据缺失时会回退到英文如果不希望回退英文或希望自定义回退顺序可以使用Faker构造函数手动组合 locale详见 Faker 构造函数 与 Localization Guide。社区与更多资源如果在使用过程中遇到问题可以通过以下渠道获取帮助详见官方 Getting Started 文档Discord实时交流与提问GitHub Discussions讨论问题与功能建议Awesome Faker社区整理的与 Faker 相关的优质资源合集。想进一步了解各模块的完整 API参见 docs/api/index.md更深入的用法复杂对象工厂、唯一值、自定义随机器等参见 Usage Guide、Unique 指南 与 Randomizer 指南本地化与多语言配置参见 Localization Guide。至此你已经掌握了 Faker 的安装、模块体系与基本使用方式可以开始在你的测试与开发流程中生成海量可靠的假数据了。【免费下载链接】fakerGenerate massive amounts of fake data in the browser and node.js项目地址: https://gitcode.com/GitHub_Trending/faker/faker创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考