EdgeDB라는 회사에서 Node.js 클라이언트를 제공하고 있었는데 이를 Deno까지 지원하기 위해서 취한 방법을 설명한 글입니다. 저도 최근에 Deno에 관심을 가지고 있어서 Node.js와의
EdgeDB라는 회사에서 Node.js 클라이언트를 제공하고 있었는데 이를 Deno까지 지원하기 위해서 취한 방법을 설명한 글입니다. 저도 최근에 Deno에 관심을 가지고 있어서 Node.js와의 차이점도 이해할 수 있습니다. Deno용으로 따로 만들어서 관리하고 싶지 않았기 때문에 기존 Node.js 클라이언트를 최소한의 리팩토링만 하고 이를 Deno와 호환될 수 있게 Denoify했습니다. 다행히 원래도 TypeScript로 작성했기 때문에 ESM을 지원하는 Deno를 위해 ESM으로 바꿔줄 필요는 없었고 서드파티 의존성도 없었기 때문에 다른 의존성의 호환성을 확인할 필요가 없었습니다. Node.js의 표준 라이브러리는 Deno 용으로 바꾸어주어야 했기 때문에 표준 라이브러리의 의존성은 하나의 파일로 모아서 어댑터로 만들고 Denoify할 때 이를 Deno 용으로 교체해주어 다른 곳에서는 수정이 필요없도록 했고 일부 파일은 배포할 때 CI에서 Deno와 호환되도록 변환해 주는 스크립트가 동작하도록 해서 하나의 코드로 Node와 Deno를 지원할 수 있게 했다고 합니다.