피드로 돌아가기
Node.js 12.16.2 (LTS)
Node.js BlogNode.js Blog
Backend

Node.js 12.16.2가 macOS 10.15 Catalina와 Xcode 11로 빌드 환경을 변경하여 macOS 패키지 공증(notarization) 요구사항 충족

Node.js 12.16.2 (LTS)

2020년 4월 8일5intermediate

Context

macOS 10.15 이상에서 .pkg 파일 설치 시 패키지 공증이 필수 요구사항이 되었다. 이전 Node.js 12.x 빌드는 macOS 10.11 El Capitan에서 Xcode로 컴파일되어 공증 요구사항을 만족하지 못했다.

Technical Solution

  • 빌드 환경을 macOS 10.15 Catalina와 Xcode 11로 업그레이드: 패키지 공증 지원 추가
  • 최소 배포 대상(minimum deployment target)을 macOS 10.10 Yosemite로 유지: 하위 버전 호환성 보장
  • OpenSSL을 1.1.1e로 업데이트: 보안 패치 적용
  • npm을 6.13.6에서 6.14.4로 업그레이드: 의존성 개선
  • Buffer 성능 최적화: from(), concat(), fill() 메서드 최적화 (Brian White)
  • 벤치마크 리팩토링: var를 let/const로 변경하고 테스트 구조 개선
  • CI/CD 마이그레이션: Travis에서 GitHub Actions로 전환
  • 크로스 플랫폼 빌드 지원: 시스템 설치 brotli, pkg_config 다중 라이브러리 지원 추가

Key Takeaway

macOS 공증 요구사항 같은 외부 정책 변화에 대응할 때 빌드 환경 업그레이드와 동시에 최소 배포 대상을 유지함으로써 기존 사용자 영향을 최소화하는 것이 중요하다.


LTS 버전을 유지보수하는 Node.js 같은 플랫폼 팀에서 OS 정책 변화(예: 패키지 공증, 코드 서명 요구)에 대응할 때, 빌드 도구를 최신 버전으로 업그레이드하면서도 최소 지원 OS 버전은 명시적으로 유지하는 전략을 사용하면 신규 요구사항 충족과 하위 호환성을 동시에 달성할 수 있다.

원문 읽기