프로젝트를 항상 Dart 형식으로 만드는 2단계

5397 단어 flutterdart
Flutter 프로젝트 및 오픈 소스 패키지를 유지 관리하고 모든 소스를 dart 형식으로 유지하는 것은 다른 공동 작업자가 PR을 쉽게 검토하고 패키지에 대한 flutter 분석을 통과할 수 있도록 하는 데 중요합니다. 대부분의 프로젝트가 GitHub와 GitLab에 있기 때문에 매월 무료로 제공되는 GitHub Action과 GitLab CI가 많은 도움이 되었습니다.

1. 로컬 사전 커밋 후크



커밋하기 전에 소스가 다트 형식에 맞는지 확인할 수 있는 사전 커밋 후크를 Flutter 프로젝트에 추가했습니다.
  • 터미널 goto.git/hooks를 열고 파일pre-commit을 만듭니다.
  • 실행chmod +x pre-commit을 실행하여 파일을 실행 가능하게 만듭니다.
  • 다음 스크립트로 pre-commit 파일을 업데이트합니다.
  • 커밋이 다트 형식을 따르지 않는 경우 메시지가 표시되고 커밋이 차단됨

  • #!/bin/sh
    
    DARTFMT_OUTPUT=`dart format lib test | grep "0 changed"`
    if [ -n "$DARTFMT_OUTPUT" ]; then
      echo "[pre-commit] All Dart files are formatted."
      echo "[pre-commit] $DARTFMT_OUTPUT"
      exit 0
    else  
      echo "[pre-commit] Files are changed, please verify and re-attempt commit"  
      echo "[pre-commit] $DARTFMT_OUTPUT"
      exit 1
    
    fi
    


    2. PR 병합 전 테스트



    많은 플랫폼에서 맞춤형 CI 작업을 제공하여 PR을 병합하기 전에 테스트를 수행할 수 있습니다. 예를 들어 GitHub Action, GitLab CI 및 CodeMagic에서 형식 테스트를 수행할 수 있습니다. 비용과 사용하는 플랫폼에 따라 모든 플랫폼을 구현할 필요가 없습니다. 이러한 움직임은 모든 공동 작업자가 개발자가 아닌 일부 상황 때문에 웹 포털에서 만든 커밋으로 인해 잘못된 형식이 발생하는 것을 방지하기 위한 것입니다.

    GitHub 작업



    GitHub를 사용하는 프로젝트의 경우 .github/workflows/에 yaml 파일을 추가하겠습니다. 예를 들어 이것은 내 .github/workflows/dart-format.yaml이며 웹에서 직접 일부 리뷰를 병합하여 실수로 다트 형식이 잘못되는 것을 방지하기 위해 풀 요청 시 한 번 실행됩니다.

    name: Dart-Format
    
    on: [pull_request]
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        container:
          image:  google/dart:latest
    
        steps:
          - uses: actions/checkout@v2
    
          - name: Print Dart SDK version
            run: dart --version
    
          - name: Verify formatting
            run: dart format --output=show --set-exit-if-changed .
    


    깃랩 CI



    마찬가지로 GitLab은 다른 상황에서 다른 작업을 수행하도록 파일 선언을 설정할 수도 있습니다. 프로젝트에 .gitlab-ci.yml를 생성하겠습니다. 다음 파일은 무언가를 푸시했을 때 다트 형식 검사를 실행합니다.

    stages:   
        - test
    
    dart-format-test:
       image: cirrusci/flutter
       stage: test
       script:
       - flutter format lib test --set-exit-if-changed
       only:
         - pushes
    


    코드매직



    사전 테스트 부분에 로컬과 동일한 bash 스크립트를 넣었습니다. 형식이 올바르지 않으면 곧 추가 작업을 중지하고 나에게 알립니다.



    내용이 마음에 드셨다면 지원해주세요🍖


    연결🍻


    좋은 웹페이지 즐겨찾기