한국정보기술진흥원
한국정보기술신문
thumbnail

정보기술 ·

Node.js 내장 기능 확대로 npm 패키지 의존성 감소...개발 환경 안정성 향상

발행일
읽는 시간1분 59초

Node.js가 최근 버전에서 기존 npm 패키지 기능을 내장화하며 의존성 관리 부담을 줄이고 보안성을 강화하고 있다.

[한국정보기술신문] Node.js 플랫폼이 지속적인 업데이트를 통해 과거 외부 패키지에 의존하던 주요 기능들을 런타임에 직접 통합하고 있어 개발자들의 주목을 받고 있다. 이러한 변화는 의존성 부담 감소, 보안 강화, 유지보수 용이성 향상이라는 실질적 이점을 제공한다.

NodeSource의 최근 블로그 게시물에 따르면, Node.js는 15가지 이상의 주요 기능을 내장화하며 npm 생태계의 의존도를 낮추는 방향으로 발전하고 있다. 대표적으로 Node.js 18 버전부터 전역 fetch 함수를 안정적으로 지원하면서 node-fetch 패키지의 필요성이 사라졌다. 이 함수는 브라우저 구현과 동일한 방식으로 작동하며, 별도의 패키지 설치 없이 HTTP 요청을 처리할 수 있다.

테스트와 파일 시스템 기능 강화

Node.js 20 버전에서는 내장 테스트 러너인 node:test가 안정화되면서 mocha나 jest 같은 외부 테스트 프레임워크 없이도 기본적인 단위 테스트 작성이 가능해졌다. 모듈 수준의 테스트에는 충분한 기능을 제공하지만, 스냅샷이나 모킹 같은 고급 기능이 필요한 대규모 프로젝트에서는 여전히 외부 프레임워크가 유용하다.

파일 시스템 관련 기능도 대폭 개선됐다. Node.js 22 버전에서는 fs.glob 함수가 추가돼 파일 패턴 매칭을 기본 지원한다. 또한 fs.rm 함수의 recursive 옵션을 통해 디렉토리 재귀 삭제가 가능해지면서 rimraf 패키지의 역할을 대체하고 있다. fs.mkdir 함수 역시 recursive 옵션으로 중첩 디렉토리 생성을 지원하며, 이는 Node.js 10.12.0 버전부터 안정화된 기능이다.

암호화와 웹 표준 지원

보안 관련 기능에서도 진전이 있다. Node.js 14.17.0 버전부터 crypto.randomUUID 함수가 제공되면서 UUID 생성을 위한 별도 패키지가 불필요해졌다. Base64 인코딩과 디코딩을 위한 atob, btoa 전역 함수도 Node.js 20 버전에서 추가됐다.

웹 표준 지원도 강화되고 있다. Node.js 21 버전부터 WebSocket 클라이언트를 전역 클래스로 제공하며, Node.js 15.4.0 버전에서는 EventTarget이 안정화돼 웹 표준 이벤트 처리가 가능하다. 다만 서버 측 WebSocket 구현에는 여전히 ws 패키지가 필요하다.

실험적 기능과 향후 전망

일부 기능은 아직 실험 단계에 있다. Node.js는 SQLite 데이터베이스를 위한 node:sqlite 모듈을 도입하고 있으며, URLPattern을 통한 라우트 매칭 기능도 실험 중이다. Node.js 20.10.0 버전에서는 env-file 플래그로 환경 변수 파일 로딩이 가능해졌지만 아직 실험 단계다.

특히 주목할 만한 것은 TypeScript 지원이다. Node.js 21 버전부터 experimental-strip-types 플래그를 사용해 TypeScript 파일을 직접 실행할 수 있다. 다만 타입 검사나 선언 파일 생성 같은 완전한 기능을 위해서는 여전히 공식 TypeScript 컴파일러가 필요하다.

콘솔 스타일링 분야에서도 변화가 있다. Node.js 22.17.0 버전에서 안정화된 util.styleText 함수는 chalk나 kleur 같은 패키지의 기본 기능을 대체한다. util.stripVTControlCharacters 함수는 로그에서 ANSI 이스케이프 코드를 제거하는 strip-ansi 패키지의 역할을 수행한다.

NodeSource는 이러한 변화가 의존성 오버헤드 감소, 공급망 보안 위험 최소화, 브라우저와 서버 간 코드 이식성 향상이라는 세 가지 주요 이점을 제공한다고 설명했다. 다만 기존 패키지들이 제공하던 고급 기능이나 하위 호환성이 필요한 경우에는 여전히 외부 패키지 사용이 권장된다.

한국정보기술신문 정보기술분과 유상헌 기자 news@kitpa.org