<aside> 💡

npm, ppm, yarn은 ppm package manager로 커맨드 명령어로 필요한 라이브러리를 프로젝트에 설치를 할 수 있잖아. deno나 bun과 같은 경우는 JS runtime 환경인데도 커맨드 명령어로 라이브러리 설치시에 옵션 중하나로 선택되는데, 어떻게 이런게 가능한가?

</aside>

Deno와 Bun은 JS/TS 런타임 환경이나 패키지 매니저처럼 라이브러리를 설치 및 관리 할 수 있는 기능도 내장하고 있다. Deno는, 런타임 자체에 패키지 관리 기능을 통합하여 URL 기반 모듈 시스템(node_modules, package.json 제공하지 않음)으로, 모듈을 URL을 통해 직접 가져온다. 모듈을 원격 URL에서 직접 다운로드 하고 캐싱하여 사용한다. 또한 deno는 보안중심으로 설계되었으므로, 모듈 설치 및 실행 시 필요한 권한을 명시적으로 지정해야만 한다.

import { serve } from "<https://deno.land/[email protected]/http/server.ts>";

Bun은 node.js와 호환성을 유지하며, 자체적인 패키지 관리 기능도 제공한다. package.json과 node_modules를 지원하면서도 패키지 매니저 워크플로우와도 호환된다. Deno에서 제공하는 URL 기반 모듈 시스템 역시도 지원한다.