-
deno bundle이 esbuild 기반으로 다시 도입되어, 서버·브라우저 모두에서 단일 파일 번들 생성 및 자동 트리 쉐이킹과 최적화 가능해짐
-
텍스트/바이트 임포트 지원 및 OpenTelemetry 내장 안정화 등으로 관측성과 외부 파일 활용 경험 강화됨
-
새 --preload 플래그, 의존성 편의 개선 deno update, 스크립트 커버리지 측정, 권한 관리, Node.js API 호환성까지 폭넓게 개선됨
-
LSP, Jupyter, bench/coverage, tsconfig 지원 향상과 다양한 편의성 개선도 함께 제공됨
Deno 2.4 주요 변경사항 및 새 기능 요약
deno bundle의 복귀
- Deno 2.4에서는 단일 파일 JavaScript 번들 생성 기능인 deno bundle 서브커맨드가 esbuild 엔진과 함께 다시 탑재됨
- 서버, 브라우저 모두를 지원하며, npm, JSR 의존성도 문제없이 번들 가능함
- 자동 트리 쉐이킹과 코드 최적화(minify) 지원 등으로 관리가 편리해진 환경 제공
- 향후 런타임 API와 플러그인을 통해 번들 프로세스의 프로그래밍적 확장 및 커스터마이징 기능 추가 예정임
텍스트 및 바이트 임포트 지원
- 자바스크립트 모듈 그래프에 텍스트, 바이너리, 이미지 등 외부 데이터 파일을 임베드할 수 있도록, --unstable-raw-imports 플래그를 제공함
- 기존에는 파일 입출력(I/O)로 외부 파일을 읽어야 했으나, 이제는 임포트 구문에서 파일 타입을 지정해 직접 바이트/텍스트 데이터 사용 가능함
- 이 기능은 번들, 컴파일 시에도 동작해 결과물에 에셋 임베딩을 간편하게 구현 가능함
- JSON, Wasm 등의 기존 임포트 지원과 함께 여러 파일 포맷을 명세 친화적으로 관리할 수 있음
- 아직 명세(스펙) 논의 중이나, Deno는 기능 진보와 표준 동향을 조화롭게 반영함
OpenTelemetry 내장 안정화
- 2.2 버전에 도입된 OpenTelemetry 내장 지원이 2.4에서는 완전히 안정화됨
-
OTEL_DENO=1 환경변수만 설정하면 별도의 플래그 없이도 로그, 메트릭, 트레이스 수집 자동화 가능함
- Node.js와의 무설정 호환 및 Deno Deploy 배포 환경까지 일괄 지원
- console.log 로그와 HTTP 요청의 자동 연결/관찰도 가능함
- 리소스 사용 특성상 환경 변수 제어가 필요함
실행 전 환경 설정용 --preload 플래그
- 주요 스크립트 실행 전에 글로벌 환경 변경, 데이터 로딩, 종속 모듈 등록 등을 위한 코드를 미리 실행할 수 있는 --preload 플래그가 추가됨
- 플랫폼 커스터마이징이나 글로벌 오브젝트 재설정 등 다양한 플랫폼 구축 시 유용함
-
deno run, deno test, deno bench 등 주요 커맨드에서 모두 사용 가능함
의존성 관리 간소화: deno update
- npm, JSR 의존성의 최신 버전 자동 업데이트를 위한 deno update 서브커맨드가 도입됨
- 여러 종속성 한 번에 최신화 및 Semver 호환성 기반 정밀 업데이트 지원
- 기존 deno outdated --update 의 별칭 제공, 사용 편의성 강화
스크립트 커버리지: deno run --coverage
- 각각의 테스트뿐 아니라, subprocess가 포함된 실행 전체의 커버리지 수집이 가능해짐
-
DENO_COVERAGE_DIR 환경 변수 등 다양한 방식의 유연한 데이터 관리 가능
- HTML 커버리지 리포트 다크 모드 지원 추가
Deno 호환성 환경변수 DENO_COMPAT=1
- npm 생태계 및 package.json 기반 프로젝트의 편의성·호환성 향상을 위한 DENO_COMPAT=1 변수가 도입됨
- 여러 불안정(Unstable) 플래그를 자동 적용하며, 향후 npm prefix 생략 등 지원 폭 확대 예정
권한 관리와 보안 개선
-
--allow-net 플래그에서 서브도메인 와일드카드 및 CIDR 범위 지원
- 코드의 임포트 가능 호스트를 제한하는 --allow-import, 명시적으로 차단하는 --deny-import 플래그 신설
-
Deno.permissions API에 "import" 타입 쿼리 정식 지원
-
Deno.execPath() 사용 시 더 이상 읽기 권한 필요 없음, 실행 파일 경로 활용이 쉬워짐
조건부 package.json exports
- npm 패키지에서 조건부 exports 지원, 특히 React 서버 구성 등 다양한 생태계 지원 강화
- 사용자 조건 플래그로 유연한 맞춤 import 동작 구현 가능
deno run에서 bare specifier 지원
- deno.json의 "imports"에 설정한 별칭(베어 스펙)으로 명령어 진입점 실행 가능
- 개발 생산성 및 모듈 관리 자동화 측면에서 큰 편의성 제공
XML, SVG 등 포맷의 코드 포매팅 개선
-
deno fmt에서 .xml, .svg, .mustache 등 다양한 템플릿 파일 자동 포매팅 지원
tsconfig.json 지원 강화
-
references, extends, files, include, exclude 등 다양한 옵션 인식 정확도 개선
- Vue, Svelte, Solid, Qwik 등 최신 프론트엔드 프레임워크와의 향상된 호환성 제공
Node 글로벌 변수 및 API 호환성 증대
-
Buffer, global, setImmediate, clearImmediate 등 Node.js 전역 오브젝트가 사용자 코드에도 항상 존재하도록 변경
- npm 패키지 전용이던 글로벌도 커맨드 플래그 없이 바로 활용 가능
- node:buffer, node:events, node:querystring, node:quic, node:wasm 등 95% 이상 호환성 달성, 앞으로도 지속적으로 확대 예정
-
@types/node 타입 기본 버전도 22.15.14로 업데이트
로컬 npm 패키지 관리 변경
- npm 로컬 패키지 연결 옵션명이 patch에서 links 로 변경되어, npm link의 의미와 일치
- 기존 옵션 사용 시 디프리케이션 경고 제공, 더 명확한 패키지 관리 가능
LSP 및 개발 생산성 개선
- LSP 성능·기능 개선과 함께, fetch의 Unix/Vsock 소켓 지원, 서버의 onListen 콜백, Jupyter 커널 관리, 린트 플러그인에서 댓글 읽기 및 bench/coverage 표의 마크다운 호환성 등 다양한 편의성 제공
- Windows에서의 Ctrl+Close 신호 인식(windows SIGHUP), bench/coverage 텍스트 출력의 마크다운 포맷 등도 새롭게 개선됨
커뮤니티 및 기여자 감사 인사
- Deno 2.4 발전에는 다양한 커뮤니티 기여자의 참여와 피드백이 큰 역할을 했음
- 더 많은 내용 및 상세 변경사항은 GitHub 릴리즈 페이지 참조 가능
결론
- Deno 2.4는 번들, 외부 파일 임포트, 관측성, 권한/보안, 호환성, 생산성 등 다양한 방면에서 큰 발전을 제공함
- 개발 흐름과 최신 프론트엔드, 노드 생태계 프로젝트에서 쉽고 강력한 통합 개발 환경 경험 가능
- 추가 정보와 최신 뉴스, 전체 변경 이력은 공식 문서 및 블로그, 깃허브 릴리즈 페이지에서 확인할 수 있음