Deno 2.4 릴리즈

18 hours ago 1

  • 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는 번들, 외부 파일 임포트, 관측성, 권한/보안, 호환성, 생산성 등 다양한 방면에서 큰 발전을 제공함
  • 개발 흐름과 최신 프론트엔드, 노드 생태계 프로젝트에서 쉽고 강력한 통합 개발 환경 경험 가능
  • 추가 정보와 최신 뉴스, 전체 변경 이력은 공식 문서 및 블로그, 깃허브 릴리즈 페이지에서 확인할 수 있음

Read Entire Article