FM을 이용한 통합 포매터
문제
나는 코드가 보기 좋고 정리된 상태를 유지하는 것을 좋아해서 포매터를 선호한다. 그러나 IDE가 포맷팅을 처리하는 방식이 복잡하고 혼란스러운 것을 좋아하지 않으며, 많은 코드를 터미널의 Vim을 통해 작성한다. 한동안 나는 파일 경로나 디렉터리 경로를 제공하면 제공한 모든 내용을 포맷해주는 포매터형 CLI 도구를 찾고 있었다. 즉, 디렉터리를 제공하면 그 디렉터리의 모든 파일을 포맷하고, 제공한 디렉터리에서 .gitignore 파일을 찾으면 이를 존중하기를 원했다. 한동안 해결책을 찾아봤지만 아무 것도 찾지 못했다.
해결책
이 문제에 대응하여 저는 ForMatter 또는 줄여서 fm을 개발했다. 이 도구는 현재 초기 개발 단계에 있는 CLI 도구로, 다양한 프로젝트 전반의 스크립트를 포맷하도록 설계되었다. 이 도구는 IDE에 의존하는 것보다 포맷팅에 대해 더 많은 제어권을 제공한다. 아직 개발 중이지만, 완전히 사용할 수 있다! 기여에 관심이 있다면 리포지토리를 포크하고 PR을 제출해 달라.
설계
fm는 Bash 스크립트로 작성되었으며 백그라운드에서 다음 라이브러리/포매터를 사용한다: shfmt, black, Prettier, & ClangFormat
이들 라이브러리/포매터를 통해, fm은 다음 형식을 지원한다: .py, .sh, .bash, .dash, .ksh, .js, .jsx, .ts, .tsx, .json, .md, .html, .css, .yml, .yaml, .graphql, .vue, .scss, .less, .c, .cpp, .h, .hpp, .m, .mm, & .java
결론
나는 개인 시스템에서 fm을 광범위하게 사용하고 있으며, 함께 일하는 많은 기여자나 협력자들도 역시 사용하고 있다. 그래서 이를 오픈소스로 공개했다. 나는 이 도구가 매우 유용하며 실질적인 가치를 제공할 수 있다고 생각하기 때문에 전 세계 누구나 사용할 수 있기를 바란다. 그러니 지금 GitHub에서 fm을 확인해 보라!