Husky 및 Lint-staged로 다이빙
오늘은 ESLint를 자동으로 실행하여 프로젝트의 주요 분기가 항상 특정 규칙 집합을 따르도록 하는 데 중점을 둘 것입니다.
보푸라기 단계
첫 번째로 이야기할 도구는 lint-staged 입니다. Lint-staged는 package.json 파일에 구성되어 있습니다.
{
"lint-staged": {
"*.js": "eslint --fix"
}
}
위의 예에서 볼 수 있듯이 glob 패턴을 사용하여 lint-staged에 실행할 파일을 알릴 수 있습니다. 또한 lint-staged에 해당 파일에 대해 실행할 명령을 줄 수 있습니다. 많은 경우에 Lint-staged가 지원하는 둘 이상의 명령이 필요할 것입니다. 이 경우 ESLint 및 prettier 을 실행합니다.
{
"lint-staged": {
"*.js": ["eslint", "prettier --write"]
}
}
그렇다면 Lint-staged는 어떻게 작동합니까? "스테이징된"파일, 따라서 이름에서 작동하도록 특별히 설계되었습니다. 이는 변경하거나 생성했지만 아직 프로젝트에 커밋하지 않은 파일을 의미합니다. 준비된 파일에 대한 작업은 주어진 시간에 린트해야 하는 파일 수를 제한하고 워크플로를 더 빠르게 만듭니다. 구성한 명령은 "사전 커밋"을 실행합니다. 프로젝트에 파일을 커밋하려고 하면 터미널에서 ESLint가 실행되는 것을 볼 수 있습니다. 완료되면 코드를 커밋할 수 있기 전에 수정해야 하는 linting 오류가 있거나 성공적으로 커밋했을 수 있습니다.
그러나 당신이 깨닫지 못할 수도 있는 것은 보푸라기 단계가 내부에서 작동하는 유일한 도구가 아니라는 것입니다. Lint-staged는 husky 이라는 다른 도구와 함께 작동하도록 설계되었습니다.
에스키모 개의
당신은 전에 눈치채지 못한 채 허스키를 만났을 수도 있습니다. 수년 동안 package.json 파일에서 몇 줄의 코드를 통해 구성되었습니다. 이 같은.
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
그러나 최신 버전의 husky v6에서는 이러한 접근 방식이 변경되었습니다. 이제 husky는 해당하는 워크플로 단계와 일치하는 파일 이름을 가진 고유한 bash 파일을 사용합니다. "사전 커밋". 운 좋게도 이것을 직접 설정할 필요가 없으며 husky에는 이를 수행할 수 있는 멋진 CLI 명령이 있습니다.
npx husky-init && npm install
npx husky add .husky/pre-commit "npm test"
명령의 첫 번째 줄은 모든 동료가 파일 커밋을 시도하기 전에 컴퓨터에 husky를 설치하도록 하는 일회성 초기화 스크립트입니다.
두 번째 줄은
pre-commit
디렉토리 안에 .husky
파일을 생성합니다. 파일을 보면 초기화한 명령보다 먼저 husky.sh
스크립트를 실행하고 있음을 알 수 있습니다. 이것은 기술적으로 제거할 수 있지만 유지하는 것이 좋습니다. 스크립트는 검사를 우회하는 --no-verify
플래그의 사용을 포함하여 몇 가지를 허용합니다.디렉토리와 관련 파일을 초기화하면 원하는 명령을 추가할 수 있습니다. 제 경우에는
npm test
를 npm lint-staged
로 바꿨습니다.미리 푸시
pre-commit
워크플로는 다소 허스키한 행복한 경로입니다. 그러나 프로젝트가 커밋 시 린트를 원하지 않고 개발자가 변경 사항을 브랜치로 푸시하려고 할 때 린트를 선호한다면 어떻게 될까요?.husky/pre-push
파일을 만들고 lint-staged를 실행하고 싶지만 작동하지 않습니다. pre-push
husky 워크플로는 정확하지만 해당 지점에서 lint-staged를 실행하면 일치하는 파일이 0개 나타납니다. 커밋된 파일이 더 이상 준비되지 않기 때문에 약간 혼란스러웠지만 이것은 의미가 있습니다. 대신 몇 가지 옵션이 있습니다.eslint '*.js'
main
: eslint --no-error-on-unmatched-pattern $(git diff main... --name-only --- '*.js')
이것은 diff 명령의 한 예이며 프로젝트에 따라 많은 고려 사항이 있습니다.
다음 단계 및 CI
git 워크플로의 일부로 ESLint, 더 예쁜 또는 테스트를 실행하는 것은 빠르게 실패하는 데 도움이 되기 때문에 중요합니다. 그러나 CI 검사를 대체하지는 않습니다. 일반적으로 아무 문제도 발생하지 않도록 두 환경에서 이러한 명령을 실행하려고 할 것입니다.
그러나 이러한 도구는 모두 더 깨끗하고 일관된 프로덕션 코드베이스를 보장하는 데 도움이 됩니다. 장기적으로 이것은 모든 프로젝트에 있어 큰 승리입니다.
Reference
이 문제에 관하여(Husky 및 Lint-staged로 다이빙), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/laurieontech/diving-into-husky-and-lint-staged-2hni텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)