프로젝트 소개
GraphQL.js는 Facebook에서 처음 만든 API용 쿼리 언어인 GraphQL의 JavaScript 참조 구현체입니다. README는 언어의 일반적인 개요를 위해 GraphQL 사양 저장소를 안내하며, 그곳에 설명된 예제들이 이 저장소 내의 테스트로 구현되어 있음을 명시합니다. 입문자에게는 해당 개요와 대응하는 테스트를 함께 읽는 경로를 권장합니다.
주요 기능
이 라이브러리는 두 가지 핵심 기능을 제공합니다. 바로 타입 스키마 구축과 해당 스키마에 대한 쿼리 서비스입니다. 스키마는 GraphQLSchema 및 GraphQLObjectType으로 정의되며, 필드의 타입은 GraphQLString과 같은 내장 스칼라 중 하나가 됩니다. 각 필드는 resolve 함수를 제공할 수 있으며, README에 따르면 리졸버는 값, promise 또는 promise 배열을 반환할 수 있습니다. 쿼리는 graphql 함수를 통해 실행되며, 이 함수는 스키마와 소스 문자열을 받아 결과의 promise를 반환합니다. 실행 전, 함수는 쿼리가 구문적 및 의미적으로 유효한지 확인하고 그렇지 않으면 오류를 보고합니다. 이는 위치 정보와 함께 "Cannot query field" 오류를 반환하는 예제로 설명되어 있습니다.
설치
GraphQL.js는 npm, yarn 또는 bun을 사용하여 `graphql` 패키지로 설치합니다. README는 모든 테스트를 통과한 17.x.x 라인의 마지막 커밋을 추적하는 자동 유지 관리 `npm` 브랜치에 대해서도 언급합니다. 이 브랜치에 직접 의존하는 것은 아직 출시되지 않은 코드를 사용하는 방법으로 제시되지만, README는 게시된 npm 빌드 사용을 권장합니다.
브라우저 및 번들러 사용
README는 이 라이브러리가 범용적이며 Node 서버와 브라우저 모두에서 사용할 수 있다고 명시하며, 이를 통해 구축된 프로젝트 예시로 GraphiQL을 듭니다. GraphQL.js는 CommonJS(`require()`)와 ESModule(`import`) 파일을 모두 배포하므로, webpack이나 rollup을 사용하는 프로젝트는 특별한 설정 없이 작동하며 사용하는 라이브러리 부분만 포함하게 됩니다. `package.json`의 `exports` 맵이 런타임과 번들러를 적절한 파일로 안내하며, `exports`를 지원하지 않는 도구는 `.js` 파일에서 CommonJS 빌드를, `.mjs` 파일에서 ESModule 빌드를 찾습니다.
프로젝트 거버넌스 및 지원
풀 리퀘스트를 통한 기여를 환영하며, 저장소는 EasyCLA에 의해 관리됩니다. 참여자는 기여 전 개인 또는 고용주를 통해 GraphQL Specification Membership 계약에 서명해야 합니다. 또한 README는 커뮤니티를 재정적으로 지원하는 방법으로 GraphQL Foundation 멤버십을 언급합니다.
변경 사항은 GitHub 릴리스로 추적됩니다. 프로젝트는 MIT 라이선스를 따릅니다. 유의적 버전(Semantic Versioning)을 따르며, 최신 메이저 버전에 대해 전체 지원(버그 수정 및 보안 업데이트)을 제공하고, 새 메이저 릴리스 후 12개월 동안 이전 메이저 버전에 대해 기능 지원(사양 변경이 파괴적이지 않은 경우에만 백포팅)을 제공합니다. 1년 미만 전에 출시된 버전을 이전 메이저 버전으로 취급하는 것을 제외하고, 더 오래된 버전은 활성 유지 관리를 제공하지 않습니다. 현재 LTS(Long-Term Support) 릴리스는 없으며, 사용자는 최신 안정 버전으로 업그레이드할 것이 권장됩니다. 메이저 버전의 지원 종료(End-of-life) 날짜는 최소 6개월 전에 공지되며, 그 이후에는 심각한 보안 문제에 대해서도 업데이트가 제공되지 않습니다. 심각한 보안 업데이트는 현재 및 이전 메이저 버전 모두에 적용됩니다. 업그레이드 지원은 버전별 릴리스 노트, 문서 사이트의 마이그레이션 가이드, 커뮤니티 Discord 채널을 통해 제공됩니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.