git 연결을 사용하여 자동화 실현
Git 연결을 사용하면 특정 트리거에서 코드를 실행할 수 있습니다.
git의 생명주기가 있을 때, 트리거가 발생하고, 이 트리거와 관련된 코드가 실행됩니다.
나는 이것이 마치 자동 미끄럼문과 같다고 생각한다.
센서가 너를 보았을 때, 차문이 열렸다.
예를 들어
git commit
이전에 명령을 실행하면 pre-commit
git 연결을 사용합니다.Every project using git can take advantage of git hooks.
이 갈고리들은
.git/hooks
디렉터리에 있는 스크립트입니다.기본적으로 그곳의 파일은 bash 스크립트이지만, 유일한 요구는 이 파일이 실행될 수 있다는 것이다.
The git documentation website lists all the available git hooks.
아무런 도구도 없는 상황에서 다른 사람과git를 공유하는 것은 상당히 번거롭다.
.git
디렉터리는git 저장소의 일부분이 아닙니다. 약간 (how meta)모든 사람이 같은 갈고리를 사용하고 갈고리를 운행하는 데 필요한 로컬 도구를 가지고 있으면 곧 골치 아픈 일이 될 것이다.
깊고 허스키했어
Husky은 자바스크립트 프로젝트에서 git 연결을 정의하고 공유할 수 있는 도구입니다.
설치
npm i husky -D
# or
yarn add husky -D
프로비저닝
이 도구를 설치한 후 프로젝트 루트 디렉터리에
.huskyrc.json
이라는 파일을 만듭니다.이 파일은 이 도구의 구성을 저장합니다.
Supplying that configuration in the
package.json
file is also possible.
{
"hooks": {
"pre-commit": "npm test"
}
}
활용단어참조
코드가 (로컬) 저장소에 제출될 때마다
pre-commit
연결이 터치됩니다.스크립트 (이 예는
npm test
) 가 반환되고 실패하지 않았을 때만 제출을 실행합니다.pre-commit
갈고리 사용 시 제출할 때마다 노래를 부를 수 있습니다.🎵 내가 생각하는 것은 완전한 약속이다.🎵
다음 그림은 새로 시작한 개츠비 응용 프로그램에 제출할 때의 터미널 출력을 보여 줍니다.
test
동안 실행된 pre-commit
명령은 1
으로 종료되어 오류 신호를 보냅니다.이 실패는 응용 프로그램 제출을 막습니다.
린트 등급
lint-staged
도구를 사용하면 임시 저장 파일 목록을 매개 변수로 사용하여 스크립트를 실행할 수 있습니다.Don't let the "lint" in the name confuse you. While linting is a very popular usecase for this package, it certainly isn't the only one!
설치
npm i lint-staged -D
# or
yarn add lint-staged -D
프로비저닝
이 도구를 설치한 후 프로젝트 루트 디렉터리에
.lintstagedrc.json
이라는 파일을 만듭니다.이 파일은 이 도구의 구성을 저장합니다.
Supplying that configuration in the
package.json
file is also possible.
문서에서 다음을 수행합니다.
Configuration should be an object where each value is a command to run and its key is a glob pattern to use for this command. This package uses micromatch for glob patterns.
{
"*.{js,jsx}": "eslint --fix"
}
위의 설정은 .js
또는 .jsx
으로 끝나는 모든 임시 저장 파일을 가져와 eslint --fix
명령에 매개 변수로 추가합니다.자동lint 및 코드 포맷
니키 메르만・ 3월 14일・ 7분 읽기
iLikeTurtles.js
및 Boop.jsx
이 변경, 저장 및 git add
으로 편집되면 다음 명령이 발생합니다.eslint --fix iLikeTurtles.js Boop.jsx
.명령이 성공적으로 완료되면
git add
ed 파일이 다시 실행됩니다.활용단어참조
npx lint-staged
# or
yarn lint-staged
예를 들어, 다음은 lint-staged
을 실행하기 전에git에 추가된 코드 (형식 오류) 입니다.var num=1
var newNum=num+5;;
eslint --fix
동안 실행된 lint-staged
명령은 1
으로 종료되어 오류 신호를 보냅니다.이 고장으로
lint-staged
고장이 발생했고 1
코드로 종료되었습니다.On failure, the changes were reverted, that means the piece of code was not formatted!
자동화
이것은 자동화에 이상적인 용례를 제공했다.
조합 husky과 lint-staged을 통해
제출하기 전에 코드를 실행할 수 있습니다. 이 코드는 각 단계 파일(예를 들어
eslint
)에서 실행되도록 설계되었습니다..huskyrc.json
을 편집하여 lint-staged
트리거에서 pre-commit
을 실행할 수 있습니다.스크립트 (이 예는
lint-staged
) 가 반환되고 실패하지 않았을 때만 제출을 실행합니다.{
"hooks": {
"pre-commit": "lint-staged"
}
}
이 설정은 전체 항목을 삭제하는 데 시간이 오래 걸릴 수 있기 때문에 제출할 파일만 삭제합니다.제출
commitlint
도구를 사용하면 문자열을 검사하고 규칙적인 스크립트를 적용할 수 있습니다.말 그대로 이 도구는 제출 메시지를 검사하는 데 사용됩니다.
이 도구는 conventional commit format의 표준을 충족시키기 위해 메시지를 강제로 제출하는 데 사용할 수 있습니다.
일반적으로 메시지 전달 "왜요?"를 제출하는 것을 권장합니다.제목과 "뭐요?"체내에 있다."어떻게 해요?"제출한 코드를 보면 볼 수 있습니다.
선명도를 높이는 동시에 일치된 제출 메시지 형식인 has many benefits을 사용합니다.
설치
npm i @commitlint/config-conventional @commitlint/cli -D
# or
yarn add @commitlint/config-conventional @commitlint/cli -D
프로비저닝
이 도구를 설치한 후 프로젝트 루트 디렉터리에
.commitlintrc.json
이라는 파일을 만듭니다.이 파일은 이 도구의 구성을 저장합니다.
Supplying that configuration in the
package.json
file is also possible.
ESLint(JavaScript 코드의 linter)과 유사하게commitlint는 광범위하게 설정할 수 있습니다.
Rule documentation
{
"extends": ["@commitlint/config-conventional"]
}
위의 설정은commitlint 검사의 모든 제출 메시지에 @commitlint/config-conventional에 설정된 규칙을 적용합니다.사용/테스트
메시지 파이프를
commitlint
으로 전송하여 메시지를 테스트하여 출력을 볼 수 있습니다.echo '<your-commit-message>' | npx commitlint
# or
echo '<your-commit-message>' | yarn commitlint
다음 그림은commitlint 검사 문자열을 사용할 때의 터미널 출력을 보여 줍니다.자동화
메시지를 제출하는linting은git 갈고리 자동화의 또 다른 이상적인 용례입니다.
조합 husky과 commitlint을 통해
제출하기 전에 추가 제출 메시지를 검사할 수 있습니다.
.huskyrc.json
을 편집하여 commitlint
트리거에서 commit-msg
을 실행할 수 있습니다.{
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
}
스크립트 (이 예는 commitlint
) 가 반환되고 실패하지 않았을 때만 제출을 실행합니다.CLI 프롬프트 도구
규칙에 맞는 제출 메시지를 수동으로 작성할 수 있지만, 제출 메시지를 작성할 때 안내할 수 있는 방법이 있습니다.
commitlint CLI 프롬프트는 제출 메시지를 신속하게 작성하고 이 규칙을 따르도록 하는 데 도움이 됩니다.
설치
npm i @commitlint/prompt-cli -D
# or
yarn add @commitlint/prompt-cli -D
활용단어참조
npx commit
# or
yarn commit
사용하기 편리하도록 이 명령을 저장소의 "scripts"
의 package.json
키에 추가합니다{
"scripts": {
"commit": "commit"
}
}
이제 스크립트를 실행하여 저장소에 제출할 수 있습니다.이 스크립트는 대화형 CLI 프롬프트를 통해 다음 단계를 안내합니다.
help
을 입력하면 해당 단계에 사용할 수 있는 명령이 나열됩니다.e, g. 형식 단계에서
help
을 입력하면 선택할 정확한 형식 (chore,feat,fix 등) 을 표시합니다.:skip
을 입력하면 선택적 단계를 건너뛸 수 있습니다.An alternative to the commitlint prompt is commitizen.
결론
Git 연결은 워크플로우를 자동화하고 코드 표준을 실행하는 데 유용합니다.
모든git 저장소 (어떤 언어로 작성하든) 를 사용할 수 있습니다.
하나의 자바스크립트 프로젝트를 예로 들면 husky 패키지는 이 저장소를 복제한 모든 사람과 특정한 갈고리 설정을 공유할 수 있는 편리한 방법을 제공한다.
lint-staged을 사용하여 코드 연결과 형식 표준을 강제로 실행합니다.
commitlint 검사 메시지를 사용하여 제출 메시지 표준을 강제합니다.
작업 흐름을 더욱 자동화할 생각은 없습니까?
알려주세요!
Reference
이 문제에 관하여(git 연결을 사용하여 자동화 실현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nickymeuleman/automation-with-git-hooks-112n텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)