Bun에서 바로 Civet 실행하기

BSK·2024년 8월 20일
0
post-thumbnail

사진: UnsplashThe New York Public Library

Bun은 이제 알만한 사람들은 다 아는 node-alternative js runtime이자, 패키지 매니저, 번들러, 바이너리 빌더(?) 를 겸하고 있는 프로젝트이다. 특히 .ts 파일들을 별도의 변환 없이 돌려볼 수 있다는 점에서 최근에 매우 유용하게 사용하고 있다. ts-node, tsx 등도 나쁘진 않지만 손이 더 가는 것은 사실이다.

그리고 또 하나의 키워드인 Civet은, js의 superset인 typescript의 superset을 자청하는 언어로, f# 스타일의 파이프와 패턴매칭 등 힙하고 맛나다는 js syntax proposal들을 장착한 언어이다. 뿌리는 coffeescript인 것으로 보이며(그래서 이름도 Civet:사향고양이; 아마 루왁커피를 의미하는 듯) 최근에도 활발한 개발이 이루어지고 있고, 한동안 정체되어 있던 고급 js 신택스 proposal들에 갈증을 느끼던 내가 발견한 하나의 단비이다.


data
  |> Object.keys
  |> console.log

civet 파일

console.log(Object.keys(data))

컴파일된 js 아웃풋


기존에는 별개의 컴파일 과정(.civet -> .js -> bun run) 의 과정을 통해 .civet 파일들을 실행하곤 했었는데, 내가 bun을 사랑하는 이유가 .ts 파일을 바로 돌려볼 수 있는 경험에서 오는데, 혹시 .civet 파일들도 그렇게 할 수 있지 않을까 하는 의문이 들었고, 찾아보니 어렵지 않게 할 수 있는 방법이 있어서 여기에 남겨본다.

bun 프로젝트 만들기

mkdir cibun && cd cibun && bun init

civet 설치하기

bun i -D @danielx/civet

civet-bun plugin 적용

echo "preload = [\"@danielx/civet/bun-civet\"]" > bunfig.toml

끝! happy civet!

간단한 예시로, 1부터 10까지의 수 중 짝수들의 제곱의 합을 구하는 코드는 아래와 같다.

"civet autoConst"
square = &*&
isEven = &%2 is 0
add = (+)

[1..10]
  .filter isEven
  .map    square
  .reduce add
|> console.log

별도의 함수로 빼지 않으면 아래와 같다.

"civet autoConst"
[1..10]
  .filter &%2 is 0
  .map    &*&
  .reduce (+)
|> console.log
profile
Biscuit Basket

0개의 댓글