Menu

메모용 개발 블로그

전체보기 > Develop >

Deno 찍먹 후기

2022-04-07 23:47:41

Node.js를 즐겨 사용하던 입장에서 Deno에 대한 소식을 아주 관심있게는 아니지만 종종 찾아보고는 했다.

그러다가 오늘 왠지 찍먹해보고 싶어서 간단하게 세팅하고 찍먹.. 아니 찍어서 핥은 정도에 대한 감상문을 써보고자 한다.

우선 설치는 MacOS 기준으로 brew로 얼렁뚱땅 설치해보니 되었다.

brew install deno

오... 일단 패키지 매니저로 설치가 되는 것.. 합격

1. 실행

그리고 나서 새로운 언어 국룰인 Hello World!!! 출력을 해보고자 했다.

console.log("hello world");

다음과 같은 밋밋한 소스코드 한 줄을 작성하고 실행

$ deno run index.ts
hello world

역시 기존에 들었던대로 타입스크립트가 바로바로 지원된다라는 점은 참으로 아름답다.

2. 실행파일

deno에 대해서 찾아보다 보니까. 다음과 같은 아름다운 기능을 제공한다.

$ deno compile index.ts
Check file:///Users/User/Source/practice/deno/index.ts
Compile file:///Users/User/Source/practice/deno/index.ts
Emit deno

위 명령어를 사용하면 deno 런타임과 함께 번들링되어 단일 실행파일로 빌드된다.

$ deno ls -alh
total 143632
drwxr-xr-x   4 User  staff   128B  3 31 21:50 .
drwxr-xr-x  13 User  staff   416B  3 31 21:33 ..
-rwxrwxrwx   1 User  staff    70M  3 31 21:50 deno
-rw-r--r--   1 User  staff    27B  3 31 21:34 index.ts

70MB의 웅장한 Hello World 앱을 만들었다.

단일 실행파일이므로 당연히 즉시 실행가능하다.

$ ./deno
hello world

이는 환경을 따로 세팅해주지 않아도 되고 해당 파일만 넘기면 배포가 된다라는 점에서 상당히 매력적인 점이다.

Node.js에서 이러한 배포를 하기 위해서 이것저것 설치하고 하던 것을 생각하면 멋진 기능이다.

3. 번들링

간단하게 테스트해보기 위해서 별도의 파일을 생성하여 import해주었다.

// imp.ts
let getText = function() {
    return "Hello World!!!";
}

export { getText };
// index.ts
import { getText } from "./imp.ts";

console.log(getText());

그 다음 번들링을 해보았다.

$ deno bundle index.ts bundle.ts
Check file:///Users/User/Source/practice/deno/index.ts
Bundle file:///Users/User/Source/practice/deno/index.ts
Emit "bundle.ts" (223B)

다음과 같이 번들 파일이 생성되었다.

// deno-fmt-ignore-file
// deno-lint-ignore-file
// This code was bundled using `deno bundle` and it's not recommended to edit it manually

let getText = function() {
    return "Hello World!!!";
};
console.log(getText());

이 역시 간단하게 배포할 때 유용한 기능이라 생각된다.

4. 그 외

이런 것 외에도 상당히 유용한 기능들이 많은데.

벤치마크..?, 코드 정리, 문법 검사 등 무언가를 거추장스럽게 설치하지 않아도 종종쓸만한 기능들을 지원하고 있다.

5. 개인적 바람

개인적으로는 deno가 성공했으면 좋겠다.

간결한 개발 시작을 할 수 있는 점과 타입스크립트에 대한 강력한 지원

node의 낡은 것들을 쳐낸 간결함..

마지막으로 패키지 매니저에서 벗어나서 간결한 배포가 가능하다는 점까지

(매번 소스 받고 npm i 이런 것에서 해방이다.)