Deno
Deno ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ Deno ์์ฒด๋ ์์ง ๋ฏธ์ํ๋ฉฐ, ํ๋ก๋์
ํ๊ฒฝ์ ์ฌ์ฉํด์๋ ์ ๋ฉ๋๋ค.
Deno์ ๊ฐ๋ฐ ๊ธฐ๊ฐ์ ๊ณ ๋ คํ์ ๋, Deno ํ์ ์ฑ๊ณผ๋ ์ข์ง ๋ชปํ์ต๋๋ค.
๊ทธ ๊ฒฐ๊ณผ Node.js๋ Deno์ ๊ธฐ๋ฅ์ ์ ์ฐจ ๋ฐ๋ผ์ก๊ณ ์์ผ๋ฉฐ, Bun๊ณผ ๊ฐ์ ๋์ผํ ์ํ๊ณ ๊ฒฝ์์๋ ๋ฑ์ฅํ์ต๋๋ค.
Deno์ ๋ฏธ๋์ ๋ํ ํ์ ์ ๊ฐ๊ธฐ ์ด๋ ต์ต๋๋ค.
๊ทธ ๊ฒฐ๊ณผ Node.js๋ Deno์ ๊ธฐ๋ฅ์ ์ ์ฐจ ๋ฐ๋ผ์ก๊ณ ์์ผ๋ฉฐ, Bun๊ณผ ๊ฐ์ ๋์ผํ ์ํ๊ณ ๊ฒฝ์์๋ ๋ฑ์ฅํ์ต๋๋ค.
Deno์ ๋ฏธ๋์ ๋ํ ํ์ ์ ๊ฐ๊ธฐ ์ด๋ ต์ต๋๋ค.
- Rust๋ก ๊ฐ๋ฐ๋์์ต๋๋ค.
- API๋ ์น ํ๊ฒฝ๊ณผ ์ต๋ํ ํธํ๋ฉ๋๋ค.
- ์ฃผ๊ด์ ์ธ
deno fmt,deno lint,deno test, =deno bench=๋ฅผ ์ ๊ณตํฉ๋๋ค. - ๊ธฐ๋ณธ์ ์ผ๋ก ์์ ํ๋ฉฐ, ์ธ๋ถํ๋ ๊ถํ ์์คํ ์ ๊ฐ์ง๊ณ ์๊ณ , ๋์ ๊ถํ ์์ฒญ์ ์ง์ํฉ๋๋ค.
ํ์ฌ Deno์๋ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉ๋๋ ํ๋๊ฐ ๋ง์ ์ธ๋ถํ๋ ๊ถํ ์ฌ์ฉ์ด ๋งค์ฐ ๋ถํธํ ์ ์์ผ๋ฉฐ, ๊ฒฐ๊ตญ์ ๊ฑฐ์น ๊ถํ์ ์ฌ์ฉํ๊ฒ ๋ ๊ฒ์ ๋๋ค. - TypeScript๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ๋ฉฐ, JavaScript ์ปค๋ฎค๋ํฐ๊ฐ TypeScript๋ก ์ ํํจ์ ๋ฐ๋ผ ์ด ์ ์ ์ ์ ๋ ์ค์ํด์ง๊ณ ์์ต๋๋ค.
- Node.js ํธํ์ฑ.
Deno์ ๋ด์ฅ ๊ธฐ๋ฅ์ ์ผ๋ฐ์ ์ผ๋ก ์๊ฒฉํ ํ
์คํธ๊ฐ ๋ถ์กฑํ๋ฉฐ, ์ปค๋ฎค๋ํฐ ํผ๋๋ฐฑ์ ์์กดํ์ฌ ์ค๋ฅ๋ฅผ ์์ ํฉ๋๋ค.
LTS๊ฐ ๋ค์ํ ํ๋ก์ ํธ์์ ์ ์ ์งง์์ง๋ ์ถ์ธ์์๋ ๋ถ๊ตฌํ๊ณ , Deno 2 ์ถ์ ์ 6๊ฐ์์ LTS๋ก ์ ์ธํ ๊ฒ์ ์ค์๋ฅผ ์์๋
๋๋ค.
Deno Land Inc.๋ ๋ค๋ฅธ ์ํ๊ณ ์ ํ์ ๋ณต์ /๋์ฒดํ ๊ฐ๋ฐ์ ์ด์ฑ์ ์
๋๋ค.
์ด๋ฌํ ์ ํ๋ค์ ๋ช ๋ฐฑํ ๊น์ ๊ณ ๋ฏผ์ด ๋ถ์กฑํ๋ฉฐ, ์ ์ง๋ณด์ ๊ฐ๋ฅ์ฑ์ ์๋ฌธ์ด ๋ญ๋๋ค.
์ด๋ฌํ ์ ํ๋ค์ ๋ช ๋ฐฑํ ๊น์ ๊ณ ๋ฏผ์ด ๋ถ์กฑํ๋ฉฐ, ์ ์ง๋ณด์ ๊ฐ๋ฅ์ฑ์ ์๋ฌธ์ด ๋ญ๋๋ค.
์ด๋ฌํ ๊ฒฝํฅ์ Deno ์์ฒด์๋ ์ํฅ์ ๋ฏธ์ณค์ต๋๋ค. ์๋ฅผ ๋ค์ด, Node.js ํธํ์ฑ์ ๋ง์ผํ
๊ณผ์ฅ์ด ์ค์ ๊ฒฐ๊ณผ๋ฌผ๋ณด๋ค ์ฐ์ ํ๋ ์ ํ์ ์ธ ์์
๋๋ค:
https://docs.deno.com/runtime/reference/node_apis/#fully-supported-modules
https://docs.deno.com/runtime/reference/node_apis/#fully-supported-modules
์กฐ๊ธ ๊ท๋ชจ๊ฐ ์๋ Deno ํ๋ก์ ํธ๋ LSP์ ์๋ต ์๋๋ฅผ ๋๋ฆฌ๊ฒ ํ์ฌ, Deno๋ฅผ ์ฌ์ฉํ๋ ค๋ ๊ฐ๋ฐ์๋ค์ ์ฝ๊ฒ ์ดํ์ํต๋๋ค.
์ด์ ๋นํด, Node.js ๋ฐ TypeScript ๊ธฐ๋ฐ ํ๋ก์ ํธ๋ ์ ์ฌํ ๋ฌธ์ ๊ฐ ์ ํ ์์ต๋๋ค.
Deno์ LSP ๊ธฐ๋ณธ ์ค์ ์ ์๋นํ ๋ณด์์ ์
๋๋ค. ์๋ฅผ ๋ค์ด, =documentPreloadLimit=์ ๊ธฐ๋ณธ๊ฐ์ 1000์ด๋ฉฐ, ์ค์ ๊ฐ๋ฐ์์๋ ์ฝ๊ฒ ์ด๊ณผ๋ ์ ์์ต๋๋ค.
WHATWG ์คํธ๋ฆผ ๋ชจ๋ธ์ ์ค๊ณ๋ ์๋นํ ์กฐ์
ํ๋ฉฐ, Node.js์ ์คํธ๋ฆผ์ ํจ์ฌ ๋ฏธ์น์ง ๋ชปํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๋ ์คํธ๋ฆผ์ด ๋ซํ๋์ง, ์ธ์ ๋ซํ๋์ง์กฐ์ฐจ ์ ์ ์์ต๋๋ค.
๋ชจ๋์ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ ๋ฐ๋ผ ํ๋กํ ์ฝ์ด ๊ฒฐ์ ๋ฉ๋๋ค.
๋ชจ๋์ด ๋ก์ปฌ ๋ชจ๋๋ก ๊ฐ์ ธ์์ง ๋, ๋ชจ๋์ =import.meta.url=์ file ํ๋กํ ์ฝ์ ๊ฐ์ง๋๋ค.
๋ชจ๋์ด ์๊ฒฉ ๋ชจ๋๋ก ๊ฐ์ ธ์์ง ๋, ํด๋น =import.meta.url=์ http/https ํ๋กํ ์ฝ์ ๊ฐ์ง๋๋ค.
๋ชจ๋์ด ๋ก์ปฌ ๋ชจ๋๋ก ๊ฐ์ ธ์์ง ๋, ๋ชจ๋์ =import.meta.url=์ file ํ๋กํ ์ฝ์ ๊ฐ์ง๋๋ค.
๋ชจ๋์ด ์๊ฒฉ ๋ชจ๋๋ก ๊ฐ์ ธ์์ง ๋, ํด๋น =import.meta.url=์ http/https ํ๋กํ ์ฝ์ ๊ฐ์ง๋๋ค.
๋ฌธ์ ๋ ์๋น์์ API๊ฐ ํ ๊ฐ์ง ํ๋กํ ์ฝ๋ง ์ง์ํ๋ค๋ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด =Deno.readFile=์ file ํ๋กํ ์ฝ๋ง ์ง์ํ๋ฉฐ, http/https ํ๋กํ ์ฝ์ ์ง์ํ์ง ์์ต๋๋ค.
์ด๋ฌํ ์ํฉ์ ๊ฐ๋ฐ์๊ฐ =import.meta.url=์ ์ฌ์ฉํ ๋ ๋ ๋ง์ ์ธ์ง ๋ถํ๋ฅผ ์ผ๊ธฐํฉ๋๋ค.
๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๋ Deno๊ฐ ๊ฐ์ ธ์จ ๋ชจ๋(์บ์)์ ๋ก์ปฌ ๊ฒฝ๋ก๋ฅผ ๋ ธ์ถํ์ง ์๋๋ค๋ ์ ์ด๋ฉฐ, ์ด๋ ์ค๊ณ ๋จ๊ณ์์ ํด๊ฒฐ๋ ์ ์๋ ๋ฌธ์ ์ ๋๋ค.
์ด๋ฌํ ์ํฉ์ ๊ฐ๋ฐ์๊ฐ =import.meta.url=์ ์ฌ์ฉํ ๋ ๋ ๋ง์ ์ธ์ง ๋ถํ๋ฅผ ์ผ๊ธฐํฉ๋๋ค.
๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๋ Deno๊ฐ ๊ฐ์ ธ์จ ๋ชจ๋(์บ์)์ ๋ก์ปฌ ๊ฒฝ๋ก๋ฅผ ๋ ธ์ถํ์ง ์๋๋ค๋ ์ ์ด๋ฉฐ, ์ด๋ ์ค๊ณ ๋จ๊ณ์์ ํด๊ฒฐ๋ ์ ์๋ ๋ฌธ์ ์ ๋๋ค.
https://github.com/denoland/deno/issues/5987
์๋นํ ๋น๊ทน์ ์ผ๋ก, Deno๋ fetch ํจ์๊ฐ file ํ๋กํ ์ฝ์ ์ง์ํ๊ฒ ํ์ฌ ํ์ผ ์ฝ๊ธฐ ๊ด๋ จ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
https://github.com/denoland/deno/issues/3196
TypeScript๋
Deno์ ๋ชจ๋ ๊ฒฝ๋ก๋ ํญ์
๋ฐ๋ผ์, Node.js ๋ชจ๋์ ์ํด ์ค๊ณ๋ TypeScript ํ๋ก์ ํธ์ ์ฝ๋๋ Deno์์ ์คํ๋ ์ ์์ต๋๋ค.
.ts ํ์ฅ์์ ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ .js ํ์ฅ์๋ก ์ปดํ์ผํ๋ ๊ฒ์ ์ง์ํ์ง ์์ผ๋ฉฐ,Deno์ ๋ชจ๋ ๊ฒฝ๋ก๋ ํญ์
.ts ํ์ฅ์์
๋๋ค.๋ฐ๋ผ์, Node.js ๋ชจ๋์ ์ํด ์ค๊ณ๋ TypeScript ํ๋ก์ ํธ์ ์ฝ๋๋ Deno์์ ์คํ๋ ์ ์์ต๋๋ค.
TypeScript 5๋ถํฐ allowImportingTsExtensions ์ค์ ํญ๋ชฉ์ ์ง์ํ์ฌ ํ๋ก์ ํธ์์
์ด ์ค์ ํญ๋ชฉ์ noEmit ๋๋ emitDeclarationOnly๋ก ์ค์ ๋ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํ๋๋ก ์ ํ๋ฉ๋๋ค.
์ด๋
.ts ํ์ฅ์๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋์์ง๋ง,์ด ์ค์ ํญ๋ชฉ์ noEmit ๋๋ emitDeclarationOnly๋ก ์ค์ ๋ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํ๋๋ก ์ ํ๋ฉ๋๋ค.
์ด๋
.ts ํ์ฅ์๋ฅผ ์ฌ์ฉํ๋ฉด์ Node.js์์ ์ฌ์ฉํ ์ ์๋ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.Deno ๊ณต์์ด ์ถ์งํ๋ JavaScript ํจํค์ง ๋ ์ง์คํธ๋ฆฌ์
๋๋ค.
JSR์ ํ๋์ ์ธ JavaScript ํจํค์ง ๋ ์ง์คํธ๋ฆฌ์์ ํ๋ฐฉํ์ง๋ง, ์ฌ์ ํ Deno ๋ฒ์ ์ npm์ ๋ถ๊ณผํฉ๋๋ค.
JSR์ TypeScript๊ฐ JavaScript์ ์์ ์งํฉ์ด ์๋๋ฏ์ด, npm์ ์์ ์งํฉ์ด ์๋๋๋ค.
JSR์ ํ๋์ ์ธ JavaScript ํจํค์ง ๋ ์ง์คํธ๋ฆฌ์์ ํ๋ฐฉํ์ง๋ง, ์ฌ์ ํ Deno ๋ฒ์ ์ npm์ ๋ถ๊ณผํฉ๋๋ค.
JSR์ TypeScript๊ฐ JavaScript์ ์์ ์งํฉ์ด ์๋๋ฏ์ด, npm์ ์์ ์งํฉ์ด ์๋๋๋ค.
์ด ๋ ์ง์คํธ๋ฆฌ๋ Deno์ ์กด์ฌํ๋ ์์กด์ฑ ๊ด๋ฆฌ ๋ฌธ์ (Ryan Dahl์ด 2018๋
์ ๋์ง ๋ถ๋ฉ๋์ด ๋ง์นจ๋ด ์์ ์๊ฒ ๋์์ด)๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํฌ๊ฒ ๋ง๋ค์ด์ก์ต๋๋ค.
๋ค๋ฅธ ๋ชจ๋์ ์๋ก ๋ค๋ฅธ ๋ ์ง์คํธ๋ฆฌ์์ ์์กด์ฑ์ ๊ฐ์ ธ์ค๊ฑฐ๋, SemVer ๋ถ์กฑ์ผ๋ก ์ธํด ๋์ผํ ๋ ์ง์คํธ๋ฆฌ ์์กด์ฑ์ ๋ค๋ฅธ ํ์ ๋ฒ์ ์ ๊ฐ์ ธ์ต๋๋ค.
์ด๊ฒ์ ํ๋ก์ ํธ์ ๋ณผ๋ฅจ ํฝ์ฐฝ(LSP ๋ถํ ์ฆ๊ฐ)์ ์ผ๊ธฐํ๊ณ , ๊ฐ์ ธ์จ ์์กด์ฑ ๊ฐ์ ์ฐธ์กฐ ๋๋ฑ์ฑ ๋ถ์กฑ์ ์ด๋ํฉ๋๋ค.
๋ค๋ฅธ ๋ชจ๋์ ์๋ก ๋ค๋ฅธ ๋ ์ง์คํธ๋ฆฌ์์ ์์กด์ฑ์ ๊ฐ์ ธ์ค๊ฑฐ๋, SemVer ๋ถ์กฑ์ผ๋ก ์ธํด ๋์ผํ ๋ ์ง์คํธ๋ฆฌ ์์กด์ฑ์ ๋ค๋ฅธ ํ์ ๋ฒ์ ์ ๊ฐ์ ธ์ต๋๋ค.
์ด๊ฒ์ ํ๋ก์ ํธ์ ๋ณผ๋ฅจ ํฝ์ฐฝ(LSP ๋ถํ ์ฆ๊ฐ)์ ์ผ๊ธฐํ๊ณ , ๊ฐ์ ธ์จ ์์กด์ฑ ๊ฐ์ ์ฐธ์กฐ ๋๋ฑ์ฑ ๋ถ์กฑ์ ์ด๋ํฉ๋๋ค.
Deno ๊ณต์์ ๊ธฐ์กด ํจํค์ง ๋ ์ง์คํธ๋ฆฌ์ธ deno.land/x๋ ๊ณ์ ์ฌ์ฉํ ์ ์๋ค๊ณ ์ฃผ์ฅํ์ง๋ง,
๊ณต์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ std๊ฐ deno.land/x์์ ์ ๋ฐ์ดํธ๊ฐ ์ค๋จ๋ ๊ฒ์ ๊ณ ๋ คํ ๋, deno.land/x์ ํจํค์ง๋ฅผ ๊ณ์ ๊ฒ์ํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค.
๊ณต์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ std๊ฐ deno.land/x์์ ์ ๋ฐ์ดํธ๊ฐ ์ค๋จ๋ ๊ฒ์ ๊ณ ๋ คํ ๋, deno.land/x์ ํจํค์ง๋ฅผ ๊ณ์ ๊ฒ์ํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค.
์ด์ (Deno 1.28์ ์ถ๊ฐ๋ npm ๋ชจ๋ ์ง์๊ณผ ๊ฐ์ด) ์ ์ฉ ์ ๋์ฌ =jsr:=๋ฅผ ์ฌ์ฉํ์ฌ URL์ ๊ฐ์ํํ ์ ์์ต๋๋ค.
https://github.com/oakserver/oak
https://fresh.deno.dev/
Deno ๊ณต์์ด 2022๋
์ ์ถ์ํ ํ์คํ ์น ํ๋ ์์ํฌ๋ก, Next.js๋ฅผ ๋ํญ๋ง๋ก ํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ์ฌ์ฉ์ ๊ถ์ฅํ์ง ์์ต๋๋ค:
- React ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค Deno ์ง์์ ํ ์คํธํ ๊ฒ์ด ๊ฑฐ์ ์์ต๋๋ค.
- ๋ด๋ถ์ ์ผ๋ก React์ ๊ฒฝ๋ ๋ณํ์ธ Preact๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์ด๋ ๋ฏธ๋๊ฐ ์๋ ๊ธฐ์ ๋ ธ์ ์ ๋๋ค.
Deno๋ CDN์ ํตํด JSDOM์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
import { JSDOM } from 'https://esm.sh/jsdom@22.1.0'https://github.com/b-fuze/deno-dom
์ด ํ๋ก์ ํธ๋ Rust์ html5ever ํจํค์ง์ ๋ฐ์ธ๋ฉ์
๋๋ค.
Deno FFI๋ฅผ ์ฌ์ฉํ๋ SQLite.
์ฅ์ :
- ์ธํฐํ์ด์ค๊ฐ better-sqlite3์ ๊ฑฐ์ ๋์ผํฉ๋๋ค.
- ๊ณ ์ฑ๋ฅ์ ๋๋ค.
WASM์ผ๋ก ์ปดํ์ผ๋ SQLite.
์ฅ์ :
- ์ต์ ๊ถํ.
- ํฌ๋ก์ค ํ๋ซํผ.
๋จ์ :
- Deno ํ์ผ ์์คํ API์ ์ ์ฝ์ ๋ฐ์ต๋๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ ์ปดํ์ผ ์ต์ ์ด ๋งค์ฐ ์ ์ด, ์ง์ ์ปดํ์ผํด์ผ ํ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค.
Deno 1.21๋ถํฐ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋นํ ํ
์คํธ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ,
๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ ํ ์คํธ๋ฅผ ์๋ฃํ ์ ์์ต๋๋ค.
Deno์ ์ด๋ฌํ ๊ธฐ์ ์ ํ์ Node.js ํ ์คํธ์ ๋ฒค๋ ์ข ์์ฑ ๋ฌธ์ ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํผํ์ต๋๋ค.
๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ ํ ์คํธ๋ฅผ ์๋ฃํ ์ ์์ต๋๋ค.
Deno์ ์ด๋ฌํ ๊ธฐ์ ์ ํ์ Node.js ํ ์คํธ์ ๋ฒค๋ ์ข ์์ฑ ๋ฌธ์ ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํผํ์ต๋๋ค.
ํ์ฌ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ BDD ์คํ์ผ, mock/stub, ์ค๋
์ท ๋งค์นญ, ํ์ด๋จธ ์๋ฎฌ๋ ์ด์
์ ์ด๋ฏธ ์ง์ํฉ๋๋ค:
https://deno.land/std@0.181.0/testing
https://deno.land/std@0.181.0/testing
https://github.com/denoland/deno_std/issues/1779
Deno๋ ํ๋ก์ ํธ๋ฅผ ๋จ์ผ ์คํฌ๋ฆฝํธ ํ์ผ๋ก ๋ฒ๋ค๋งํ๋ ๋ด์ฅ ๋ช
๋ น =deno bundle=์ ์ ๊ณตํฉ๋๋ค.
Ryan Dahl์ ํ๋ ์ด ๋ช
๋ น์ ์ญ์ ํ ๊ฒ์ ์ ์ํ์ง๋ง, ์ด ์์ด๋์ด๋ ๋์ค์ ์ฒ ํ๋์์ต๋๋ค.
๊ทธ๋ฌ๋ v1.31์์๋ ์ด ๋ช ๋ น์ด ์ปค๋ฎค๋ํฐ ๋ ผ์ ์์ด ๊ฐ์๊ธฐ ์ฌ์ฉ ์ค๋จ์ผ๋ก ๋ถ๋ฅ๋์๊ณ , ๊ณต์ ๋งค๋ด์ผ์์๋ esbuild ์ฌ์ฉ์ ๊ถ์ฅํ์ต๋๋ค.
๊ทธ๋ฌ๋ v1.31์์๋ ์ด ๋ช ๋ น์ด ์ปค๋ฎค๋ํฐ ๋ ผ์ ์์ด ๊ฐ์๊ธฐ ์ฌ์ฉ ์ค๋จ์ผ๋ก ๋ถ๋ฅ๋์๊ณ , ๊ณต์ ๋งค๋ด์ผ์์๋ esbuild ์ฌ์ฉ์ ๊ถ์ฅํ์ต๋๋ค.
v2.4์์ deno bundle์ ์ ์ ์๋ ์ด์ ๋ก ๋ณต๊ทํ์ผ๋ฉฐ, ๊ทธ ๋ด๋ถ์ ์ผ๋ก๋ esbuild๋ฅผ ์ฌ์ฉํฉ๋๋ค.
v2.5์์๋ HTML ํ์ผ์ ๋ฒ๋ค๋ง์ ์ง์ ์ ์ผ๋ก ์ง์ํฉ๋๋ค.
v2.5์์๋ HTML ํ์ผ์ ๋ฒ๋ค๋ง์ ์ง์ ์ ์ผ๋ก ์ง์ํฉ๋๋ค.
deno run ๋ช
๋ น์ผ๋ก ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ๋, TypeScript ํ์
๊ฒ์ฌ๊ธฐ๊ฐ ๋ก๋๋์ด deno ํ๋ก์ธ์ค๊ฐ ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.=deno compile=์ ํตํด ๋จผ์ ์ปดํ์ผํ ํ ์คํํ๋ฉด, ์คํฌ๋ฆฝํธ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ํ์ ํ ๊ฐ์ ๋ฉ๋๋ค.