안녕하세요! 오늘은 프로젝트 홍보 겸 동기 유발을 목적으로 Devlog를 써보려고 합니다. 잘 봐주세요 ><

rustyle이 뭐죠?

rustyle은 styled-components에 영향을 크게 받은 CSS in Rust 라이브러리입니다. proc macro를 사용해 컴파일 타임에 css 파일을 만들며, 강력한 타입 검사와 함수, 중첩된 선택자 지원을 목표로 하고 있습니다.

왜 쓰죠?

Rust이기 때문에

rustyle은 css가 아니라 rust 코드입니다. 그렇기 때문에 따로 빌드 도구를 쓰지 않아도 됩니다. 그리고 GitHub 언어 목록을 볼 때 12% CSS 같은 걸 안 봐도 됩니다! (중요)

안전하기 때문에

yew 등의 HTML in Rust 라이브러리와 같이 rustyle을 쓸 때, CSS 클래스 이름은 그냥 변수이기 때문에 컴파일이 된다면 클래스의 존재가 보장됩니다. 또, 자동으로 생성되는 클래스 이름은 충돌 가능성이 0에 수렴합니다.

엄격하기 때문에

rustyle은 엄격합니다. 컴파일 타임에 타입 검사를 수행하고 정적 CSS를 생성합니다. 따라서, 컴파일이 되었다면 올바른 스타일시트가 만들어졌다는 확신을 개발자에게 줄 수 있습니다.

친절하기 때문에

rustyle은 이렇게 최대한 친절한 메시지를 지향하고 있습니다.

image.png

CSS 프로퍼티 이름에 공백이 들어가도 전부 제거해서 저렇게 쓰는 게 허용되기는 하지만 지우라고 권장하고, 벤더 프리픽스의 제거도 친절히 권장해요. 이렇게 사용자가 편하도록 만드는 걸 목표로 하고 있어요.

얼마나 만들었나요?

간단한 선언을 파싱해 CSS 클래스와 파일을 만들 수 있어요. 하지만 지금으로써는 background-color와 user-select만 등록되어 있고, 키워드와 헥스 색상만 파싱할 수 있어요. 아직 갈 길이 멀죠.

다른 비슷한 것은 없나요?

rsx는 제겐 썩 만족스럽지 않지만 나름대로의 CSS 매크로를 만들었고, percy 역시 그 나름대로의 CSS 매크로를 갖고 있어요. 다만 둘은 서로 호환되지 않고, 세부적인 기능 역시 달라요.


빨리 다 만들어서 여러분께 자랑하고 싶어요! 사실 이거 자랑하고 싶어서 쓴 글이에요!