【Ruby】 커밋하기 전에 husky+lint-staged 로 Rubocop의 자동 성형 & 체크를 실시한다

4148 단어 RuboCop루비Git

이 기사 뭐야?


  • Qiita - 커밋하기 전에 Lint를 강제하면 lint-staged가 유용합니다.
  • MANA-DOT - husky + lint-staged로 git의 precommit시에 imagemin을 실시해, minify한 이미지만 커밋되도록(듯이) 한다

  • 위 기사를 참고로 husky + lint-staged
    그 구조를 사용하여 Rubocop의 자동 성형 및 체크를 실시하는 환경을 구축할 수 있었으므로, 그 순서 메모가 됩니다.

    이 기사를 읽어 주신 분에게


  • "이런 것도 적어 두는 것이 좋다."
  • "그것, 해석이 잘못 됐어"

  • 적인 것이 있으면 코멘트등 받을 수 있으면 도움이 됩니다. 🙇‍♂️

    rubocop 옵션 변경 2019.08.05 추가



    분보 동료의 aqui 씨로부터, 피드백을 받았습니다!
  • RuboCop 옵션을 다시 시작하면 pre-commit 후크를 통한 문제도 해결되었습니다.

  • 이 기사를 참고로 곧 기사를 업데이트하고 싶습니다.

    환경


  • macOS

  • Homebrew에서 설치 한 gityarn

    절차



    실제로 설정한 순서를 기재해 갑니다.

    준비



    필요한 Gem 및 npm 패키지를 설치합니다.
    # Rubocopのインストール(or Gemfileへrubocopを追記して、bundle installする)
    gem install rubocop
    
    # npmパッケージのインストール
    yarn add -D lint-staged husky
    

    package.json 설정



    rb, rake 파일을 대상으로 Rubocop에 의한 자동 성형과 체크를 하는 명령을 기재합니다.
    {
      "husky": {
        "hooks": {
          "pre-commit": "lint-staged"
        }
      },
      "lint-staged": {
        "linters": {
          "*.{rb,rake}": [
            "rubocop -a",
            "rubocop",
            "git add"
          ]
        }
      }
    }
    
    bundle install 한 Rubocop을 사용하고 싶은 경우는, 이하의 커멘드를 기재하는 것이 좋을까라고 생각합니다. (확인되지 ​​않았지만 아마도 문제없이 작동할 것이라고 생각합니다.)
  • bundle exec rubocop -a
  • bundle exec rubocop

  • 이것으로 설정이 완료됩니다.

    주의사항



    팀 개발 등에서 본 설정을 사용하고 싶은 경우, 반드시 yarn 하고, npm 패키지를 인스톨 해 주세요.

    ※npm 패키지를 인스톨 해 두지 않으면, lint-stagedhusky 가 동작하지 않으므로, 주의가 필요합니다.



    CircleCI 측에서 Rubocop의 자동 성형을 한 PR을 내주는 Gem도있는 것 같습니다.
  • Qiita - rubocop --auto-correct 보정 결과를 자동으로 PR로 설정
  • RubyGems - rubocop-automata

  • 자동 성형을 커밋에 포함하지 않는 운용으로 하고 싶은 경우는, 상기를 활용하는 것이 좋을 것 같습니다.

    좋은 웹페이지 즐겨찾기