-
Tuist를 통해 SwiftLint 사용하기Tuist 2023. 4. 25. 11:56
안녕하세요. 그린입니다🍏
이번 포스팅에서는 Tuist로 환경 구축을 하며 코드 및 파일 컨벤션을 잡아주기 위한 SwiftLint를 도입하면서 조금 더 라이트하게 사용해보려합니다🙋🏻
우선, swiftLint는 많이들 사용할것 같은데요.
brew로 swiftLint를 설치해줄 수 도 있고, CocoaPods이나 Mint로 해당 SwiftLint 라이브러리를 설치 후 사용할 수 있습니다.
그런데 이러한 과정들은 해당 SwiftLint를 모두 의존성 설치하고 가져와서 사용하는 경향이 있어 Tuist를 사용하면서 조금 더 라이트하게 필요한 부분만 가져와 실제 brew, Cocoapods, Mint로 설치 한 후 사용하지 않는 방법을 도입해봤습니다😃
아주 간단명료하니 한번 따라가보시죠!
Tuist를 구축하며 SwiftLint 사용
우선, Tuist 설정할 Project.swift 파일부터 보겠습니다.
컨벤션 체크를 위해 SwiftLint가 돌아줄 원하는 타겟에서 build scripts에 커스텀하게 SwiftLint를 구성할 수 있습니다.
예를들어 아래와 같이 사용될 수 있어요.
.pre( script: """ ROOT_DIR=\(ProcessInfo.processInfo.environment["TUIST_ROOT_DIR"] ?? "") ${ROOT_DIR}/swiftlint --config ${ROOT_DIR}/.swiftlint.yml """, name: "SwiftLint", basedOnDependencyAnalysis: false )
리소스들을 컴파일 하기 전에 돌아주기 위해 Tuist에서 build script 생성 시 전 후를 나눌 수 있는데, 전에 돌아줘야 하기에 pre로 해당 스크립트를 작성해줍니다.
여기서, TUIST_ROOT_DIR이라는게 있습니다.
즉, 지금 해당 로컬 프로젝트 경로를 받아와 그 안에 있는 swiftLint.yml을 돌려준다는 말인데요.
이를 위해서는 처음말한것처럼 직접 설치하지 않고 swiftLint exec 파일만 경로에 넣어주고 TUIST_ROOT_DIR을 지정해줄 수 있습니다.
그럼 바로 이어서 먼저 필요한 swiftLint exec 파일을 찾아보죠!
우선 해당 파일을 찾고 추출하기 위해선 설치가 되어야 합니다.
예를들어 homebrew로 설치하고 아래 명령어를 통해 swiftlint 설치 경로를 확인합니다.
which swiftlint
그럼 homebrew/bin 내 해당 폴더 위치를 알려줍니다.
요 폴더로 들어가면 요런식으로 swiftlint bin 폴더에 실행파일을 찾을 수 있어요.
이제 복사 혹은 옮겨와야 합니다.
이 파일을 해당 본인의 프로젝트 경로 최상단에 넣어줍니다.
이 파일이 있어야 실제 TUIST_ROOT_DIR을 저 실행파일이 도는 경로인 프로젝트 경로로 지정해주는 작업을 거치게 됩니다.
그 다음으로 tuist generate를 하면 저 파일이 돌지 않기에 아래와 같이 명령어로 tuist generate를 시켜줍니다.
TUIST_ROOT_DIR=${PWD} tuist generate
이걸 터미널에서 실행하면 실제 Tuist를 통해 커스텀 빌드 스크립트 명령문을 실행하게 됩니다.
즉, ROOT_DIR에 해당 경로인 user/프로젝트경로/bla 이런식으로 경로가 입혀지게 되고,
그 다음 해당 경로의 .swiftlint.yml로 스크립트를 실행하게 만들어주죠.
근데 매번 tuist generate만 하다가 이런 TUIST_ROOT_DIR=${PWD}를 붙여주기 너무 귀찮고 까먹을 수 있잖아요?
그래서 이런 작업을 Makefile을 만들어 터미널에서 좀 더 편하게 사용해볼 수 있습니다.우선 Makefile을 생성하고 아래와 같이 간단히 원하는 명령어와 돌아줄 bash 명령을 넣어줍니다.
.PHONY: generate generate: TUIST_ROOT_DIR=${PWD} tuist generate
그럼 이제 터미널에서 make generate 명령을 통해 저 내부 명령어를 실행하게 되고, TUIST_ROOT_DIR에 경로를 넣고 tuist generate 시켜주는 일련의 과정을 거치게 됩니다.
요렇게 Makefile을 활용해 조금 더 편리하게 구축할 수 있습니다.
물론 tuist fetch나 tuist를 초기 설치할 그런 bash 명령들도 Makefile에 명령어를 두고 일련의 과정을 통합하면 조금 더 유의미하게 사용할 수 있을것 같아요!
다른 방법으로는, grunt와 같은 자바스크립트 태스크 러너를 통해 관리해줘도 됩니다.
마무리
Tuist를 처음부터 도입하면서 신규 프로젝트를 진행하면 크게 무리가 없는데 기존 있던 프로젝트에 도입하는 과정에서 build setting이나 build script 등 고려할것들이 많더라구요.
그런 과정에서 Tuist의 장점을 활용하며 조금 더 편리하게 인프라 구축을 하는 방법을 찾다 알아보게 되었습니다!
더 편한 방법이나 다른 방법들이 있을것 같은데 아직 발견하지 못해서 아는분 있으시면 같이 공유해요🎉
[참고 자료]
https://github.com/realm/SwiftLint
https://tuist.github.io/tuist/main/documentation/projectdescription/targetscript
'Tuist' 카테고리의 다른 글
Multiple commands 에러 바로잡기 (feat. GoogleService-Info.plist) (8) 2023.05.04 Tuist에서 Firebase Crashlytics 설정하기 (15) 2023.04.27 Tuist - Custom Flags 다루기 (6) 2023.04.18 Tuist에서 Lottie 리소스 설정하기 (with. JSON) (16) 2023.04.13 Tuist 도입으로 swiftGen 겉어내기 (with. TuistGenerator) (6) 2022.07.18