Notice
Recent Posts
Recent Comments
Link
관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] Mint 패키지 관리 도구, SwiftLint 적용 방법, (Failed to build with SPM 오류 해결) 본문

빌드 환경 설정

[iOS - swift] Mint 패키지 관리 도구, SwiftLint 적용 방법, (Failed to build with SPM 오류 해결)

jake-kim 2021. 12. 8. 01:38

Mint 란?

  • SPM을 지원하는 프레임워크를 편하게 설치할 수 있는 Swift command line 툴
  • 장점
    • 특정 버전의 패키를 쉽게 실행
    • 패키지를 전역으로 link 기능이 간편
    • 빌드는 버전 별로 자동으로 캐싱
    • 쉽게 사용할 수 있도록 Mintfile에 버전이 지정된 패키지 목록을 지정하여 사용

Home brew로 Mint 설치

  • HomeBrew 설치 방법은 이곳 참고
  • M1에서 설치
$ arch -arm64 brew install mint
  • (intel에서 설치)
$ brew install mint

mint 사용 준비 - Mintfile 파일

  • project의 root 폴더에 Mintfile 파일 생성
$ vi Mintfile
  • realm/SwiftLint@0.44.0 입력 후 저장

  • Mintfile에 명시된 의존성 설치 및 global 연결 (mint bootstrap을 실행하면 Minfile 실행)
    • M1에서는 arch -arm64가 붙는것을 주의
      안붙이면 Failed to build SwiftGen with SPM 오류 발생
$ sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
$ arch -arm64 mint bootstrap --link # arm cpu인 경우, arch -arm64 필요
  • arm cpu가 아닌 intel인 경우, arch -arm64 불필요하여 아래처럼 실행
    mint bootstrap --link​
  • 설치 완료

Xcode run Script 작성

  • Target -> Build Phases -> + 버튼 클릭

  • New Run Script Phase 클릭

  • 생성한 "Run Script" 이름을 "Run SwiftLint"로 변경 후 위치를 Compile Sources 위로 이동
    • Compile Sources 위로시키는 이유 - 컴파일 하기 전에 스크립트를 실행시켜 SwiftLint 검사 먼저 수행하는 의도

생성완료
이름 수정 후 Compile Sources 위로 이동 

  • script 작성 "mint run swiftlint"

  • .swiftlint.yml 파일 생성 - Xcode에서 Empty 파일로, 이름은 반드시 .swiftlint.yml로 생성
    • lint 규칙 정의할 파일을 프로젝트 루트 폴더에서 이름은 ".swiftlint.yml"로 생성
$ vi .swiftlint.yml
  • .swiftlint.yml에 예제 내용 입력
    • 주의) included의 값은 자신의 프로젝트 이름 입력
included:
  - ExSwiftLintByMint # 프로젝트 이름
variable_name:
  min_length: # only min_length
    error: 4 # only error
  • Xcode 실행 시 lint 동작

* 주의- cocoapods에 경고 메시지 해제 방법

# podfile

source 'https://cdn.cocoapods.org/'
platform :ios, '13.0' # cocoapods 프레임워크들이 13.0 버전에 맞추도록 설정 (경고 메시지 해제)

inhibit_all_warnings! # cocoapods의 swiftlint 경고 메시지 해제

* 전체 소스 코드: https://github.com/JK0369/ExSwiftLintByMint

 

* 참고

- https://github.com/SwiftGen/SwiftGen

- https://swiftobc.com/repo/yonaskolb-Mint-swift-dependency-managers

Comments