기여하기
라이브러리에 대한 새로운 기여를 환영하지만 다음의 가이드라인을 따라주시기 바랍니다:
- 메이저 추가 또는 변경에 대한 PR을 열기 전에 Chart.js 슬랙 #dev 채널에서 문제 제출을 하거나 이에 대해 질문하여 예상 API 와/또는 구현에 대해 논의 하십시오. 이렇게 하면 피드백을 미리 받아 개발 시간을 절약하고 관리자에게 더 많은 컨텍스트와 세부 정보를 제공하여 더 빠르게 검토할 수 있습니다.
- 변경 사항이 모든 사용자에게 유용한 변화인지 아니면 Chart.js 플러그인을 만드는 것이 더 적절한지 고려하십시오.
-
테스트를 통과하고
eslint
코드 표준을 통과하는지 당신의 코드를 확인하세요.gulp test
는 린터와 테스트 모두에 동작할 것입니다. -
유닛 테스트와 문서에 새로운 기능을 추가하세요 (각각
test/
와docs/
폴더 안에 있습니다). - 드물게 예정된 주요 릴리즈가 없는한 변경 사항을 중단하지 마세요. 우리는 새로운 고급 기능에 대한 플러그인을 작성하고 이전 버전과의 호환성에 많은 관심을 갖도록 권장합니다.
-
가능할 때마다 비공개로 추가되는 새로운 메소드를 강하게
선호합니다. 메소드는 클래스 외부에 최상위
function
을 만들거나_
접두사를 붙이고 클래스 내부에서@private
JSDoc을 추가하여 비공개로 만들 수 있습니다. 공용 API는 이전 버전과의 호환성을 깨지않고 변경할 수 있는 기능이 제한되어 있으므로 구현된 후에는 검토하고 잠기는데 상당한 시간이 걸립니다. 비공개 API를 사용하면 예상치 못한 사례를 유연하게 해결할 수 있습니다.
프로젝트 참여
적극적인 커미터와 기여자들은 자신을 소개하고 프로젝트에 대한 커밋 엑세스 권한을 요청하도록 초대됩니다. 여기 당신이 참여할 수 있는 매우 활동적인 슬랙 커뮤니티를 가지고 있습니다. 만약 당신이 도울 수 있다고 생각된다면 우리는 당신을 원합니다!
빌딩과 테스팅
Chart.js는 라이브러리를 단일 자바스크립트 파일로 빌드하는데 gulp를 사용합니다.
첫번째로 개발 종속성들이 설치되었는지 확인할 필요가 있습니다. 커맨드 창으로 node와 npm으로 로컬 디렉토리에 Chart.js 레포지토리를 복제한 후 설치하고 그 디렉토리로 이동하여 다음과 같이 실행할 수 있습니다:
> npm install
> npm install -g gulp-cli
자바스크립트 태스크 러너인 gulp를 위한 CLI와 함께 Chart.js를 위한 로컬 개발 종속성들을 설치합니다.
다음의 명령어들은 루트 레포지토리에서 사용가능합니다:
> gulp build // ./dist 안에 dist 파일들을 빌드
> gulp build --watch // 변경에 대한 빌드를 감시
> gulp unittest // ./test/specs 으로 부터 테스트를 실행합니다
> gulp unittest --watch // source 변경을위한 테스트 실행 및 감시
> gulp unittest --coverage // ./coverage 안에 범위 문서를 생성하고 테스트를 실행
> gulp lint // 코드 린팅 수행 (ESLint)
> gulp test // 코드 린팅과 유닛 테스트 수행
> gulp docs // in ./dist/docs 안에 문서를 빌드
> gulp docs --watch // gitbook 라이브 reloaded 서버 시작
더 많은 정보는 gulpfile.js에서 찾을 수 있습니다.
이미지 기본 테스트
일부 디스플레이 관련 기능은 일반적인 자스민 장치를 통해 테스트하기가 어렵습니다. 이러한 이유로 우리는 예상 이미지와 일치하는 픽셀 단위로 그려지는 이미지 기반 테스트(#3988 과 #5777)를 도입하였습니다.
이미지 기반 테스트에서 생성된 차트는 Generated charts in image-based tests should be 가능한한 최소화해야 하며 다른 기능이 중단된 경우 실패를 방지하기 위해 테스트된 기능에만 집중해야 합니다 (예: 스케일 테스팅시 제목과 범례 비활성화 ).
다음 아래에 있는 단계를 통해 새로운 이미지 기반 테스트를 만들 수 있습니다:
- 차트 설정과 생성 옵션이 정의된 JS 파일 (예제) 또는 JSON 파일 (예제) 생성.
-
이 파일들은
test/fixtures/{spec.name}/{feature-name}.json
안에 추가됩니다. -
아직 존재하지 않는 경우,
test/specs/{spec.name}.tests.js
시작 부분에 설명 선을 추가합니다. -
gulp unittest --watch --inputs=test/specs/{spec.name}.tests.js
실행. - "Debug" 버튼 클릭 (top/right): 연결된 캔버스가 표시되고 테스트가 실패해야 합니다.
-
차트를 마우스 오른쪽 버튼으로 클릭하고
"다른 이름으로 이미지 저장..."
test/fixtures/{spec.name}/{feature-name}.png
툴팁이나 호버 기능이 활성화되지 않도록 합니다 -
브라우제 페이지를 새로고침 (
CTRL+R
): 이제 테스트를 통과해야 합니다 - slightly in the JSON 파일에서 기능 값을 약간 변경하여 테스트 관련성을 확인합니다.
테스트는 두 브라우저에서 모두 통과해야 합니다. 일반적으로,
이미지 테스트에서 모든 텍스트는 다른 브라우저간에 전달하기
매우 어렵기 때문에 숨겼습니다. 결과적으로 이미지 기반
테스트에서 모든 스케일은 숨기는 것을 권장합니다. 또한
애니메이션 비활성화도 권장합니다. 만약 테스트가 여전히
통과되지 않느다면,
가능한한 적게 유지되도록 JSON 파일의
시작에
tolerance
와/또는
threshold
를 적용하세요.
테스트가 실패했을시 예상 이미지와 실제 이미지가
보여집니다. 테스트를 통과했는데도 이미지를 보고 싶다면
JSON 파일에서 "debug": true
로
설정하세요.
버그와 이슈
GitHub 페이지 -
github.com/chartjs/Chart.js에 알려주세요. 지원 요청에 이슈를 사용하지 말아주세요.
Chart.js 사용에 도움이 필요하면 Stack Overflow에서
chartjs
태그를 찾아보세요.
잘 구조화되고 자세한 버그 보고서는 프로젝트에 매우 가치 있습니다.
버그 보고서에 대한 가이드라인:
- 이슈 검색을 확인하여 이미 보고되었는지 확인하세요
- 간단한 테스트 케이스로 문제를 분리하세요
-
JS Bin,
JS Fiddle
또는
Codepen과 같은 웹사이트에 버그의 실행화면을 포함해주세요. (Template).
master
에 대한 버그를 제출할 경우, https://www.chartjs.org/dist/master/Chart.min.js를 통해 최신 코드를 참조할 수 있습니다 (적절한 파일을 가리키도록 파일 이름 변경). 이러한 파일들을 언제든지 삭제될 수 있으므로 프로덕션 목적을 위해 이 파일들을 신뢰하지 마세요.
브라우저 또는 화면에 따라 다르거나 특정 설정이나 데이터에 대해서만 발생한다면 버그와 관련된 모든 자세한 추가사항을 제공해주세요.