이 라이브러리를 소개합니다! faker.js

흩날리는추억·2024년 4월 2일
0
post-thumbnail

❓ faker란 무엇인가?

faker는 특정 용도에 사용할 수 있는 더미 데이터를 생성하는 라이브러리입니다.

  • 단위 테스트
  • 성능 시험
  • 데모 구축
  • 백엔드 없이 작업하기

브라우저나 Node.js에서 실행할 수 있으며 Node.js의 경우 14버전 이상에서 사용할 수 있습니다.

🖊️ faker 사용하기

설치

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

Node.js에서 사용

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

const randomName = faker.person.fullName(); // 무작위 이름 
const randomEmail = faker.internet.email(); // 무작위 이메일

브라우저에서 사용

<script type="module">
  import { faker } from 'https://esm.sh/@faker-js/faker';

  // Caitlyn Kerluke
  const randomName = faker.person.fullName();

  // Rusty@arne.info
  const randomEmail = faker.internet.email();
</script>

TypeScript 지원

Faker는 기본적으로 TypeScript를 지원하므로 추가 패키지를 설치할 필요가 없습니다. Faker가 제대로 작동하려면 다음 사항이 파일 compilerOptions에 올바르게 설정되어 있는지 확인해야 합니다 tsconfig.

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

🔍 데이터 종류 살펴보기

faker에서는 많은 종류의 Module API를 제공하고 있으며 아래의 사진을 보면 Person에서도 많은 종류의 데이터를 이용할 수 있습니다.

Person 말고도 Music, Number, Database 등이 있어 상황에 따라 필요한 더미 데이터를 생성하여 활용할 수 있습니다.

ip 주소

// ex) '245.108.222.0'
const ipv4 = faker.internet.ipv4();
// ex) '269f:1230:73e3:318d:842b:daab:326d:897b'
const randomEmail = faker.internet.ipv6();

아바타

특정 종류의 아바타 사진도 랜덤으로 사용할 수 있습니다.

// ex) 'https://avatars.githubusercontent.com/u/97165289'
const avatar = faker.image.avatar();
const avatarGitHub = faker.image.avatarGitHub()
// ...
<img src={avatar} alt='아바타 사진' />
<img src={avatarGitHub} alt='깃허브 사진' />

🔑 객체로 활용하기

아래 코드와 같이 여러 종류의 API를 활용하여 객체 데이터를 만들 수 있습니다.

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

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

const user = createRandomUser();

❗ 주의점

버전에 따라 사용할 수 있는 API가 다르기 때문에 상황에 맞은 버전을 사용해야 합니다.

faker에 대해 검색하던 중 알게된 사실인데 2022년에 faker를 유지보수하던 개발자가 Repo를 전부 삭제하는 만행을 저질러 faker를 사용하는 많은 프로젝트들이 망가진 사건이 있었습니다. 물론 현재는 여러 명의 개발자들이 공동으로 유지보수하고 있어 사용하는데 문제 없습니다. 관련 기사

✏️ 마무리

개발을 하다보면 간단하지만 여러 종류의 데이터가 필요한 순간이 있습니다. 특히 막 개발을 배우기 시작할 때는 faker과 같은 라이브러리가 많은 도움을 준다고 생각합니다.

추가적으로 예전 faker.js를 개발한 개발자는 colors.js라는 라이브러리도 제작하였는데 무한 루프을 일으키는 코드를 업데이트하여 문제가 일어나기도 했습니다. 이를 통해 오픈 라이브러리를 사용할 때에는 생각보다 조심스럽게 사용하는 것이 좋다고 느꼈습니다.

또한 자신에게 필요한 기능을 직접 구현하는 것도 개발자로서의 성장을 빠르게 할 수 있는 방법인거 같습니다.

🙏 글 작성에 도움받은 목록

faker 공식 문서
revf님의 tistory

profile
걱정보다 생각을 하고 싶은 사람

0개의 댓글