[번역] JSR은 또 다른 패키지 관리자가 아닙니다

Sonny·2024년 6월 20일
3

Article

목록 보기
23/25
post-thumbnail

원문: https://deno.com/blog/jsr-is-not-another-package-manager

지난 몇 년 동안 yarn과 pnpm과 같은 새로운 패키지 관리자가 등장하여 패키지 다운로드 방식이 개선되었습니다. 하지만 자바스크립트 생태계의 초석인 npm 패키지 레지스트리는 거의 발전하지 못했습니다. 몇 년 전에 추가된 '파일' 탭이 마지막으로 주목할 만한 업데이트였습니다. 활발하게 발전하는 것으로 유명한 자바스크립트 언어가 역설적이게도 그 속도를 따라가지 못하는 배포 모델에 갇혀 있는 것처럼 보입니다.

제가 Node를 만들 당시에는 자바스크립트를 위한 표준 모듈 시스템이 없었습니다. 그 결과 npm 레지스트리와 Node는 브라우저에서 작동하지 않는 근본적인 결함이 있는 시스템인 CommonJS(require)를 기본값으로 사용했습니다. 그래서 거의 10년 전인 2015년에 ES 모듈을 위한 구문(import)을 채택했습니다. 오늘날 대부분의 자바스크립트는 ES 모듈을 사용하여 작성되지만 이러한 모듈을 배포하는 경로는 여전히 복잡하며, 특히 타입스크립트가 관련된 경우 더욱 그렇습니다. 이러한 생태계의 명확한 격차가 JSR의 탄생을 촉발시켰습니다. JSR은 또 다른 패키지 관리자가 아니라 서버 측 런타임, 브라우저 및 다양한 도구에서 자바스크립트와 타입스크립트가 공유되는 방식을 혁신하기 위해 설계된 혁신적인 레지스트리입니다.

JSR은 오랫동안 개발자들을 괴롭혀온 복잡성을 간소화하여 코드 배포 프로세스를 근본적으로 개선합니다. JSR은 ESM 전용이고 타입스크립트를 우선하므로, 복잡한 package.json 설정과 미로 같은 tsconfig 컴파일러 옵션의 번거로움을 없애줍니다. JSR은 패키지 점수 시스템을 통해 코드 배포 모범 사례를 장려하며, Dart 커뮤니티에서 pub.dev에 있는 것과 유사하게 내보낸 각 심볼에 대한 포괄적인 JSDoc 문서가 포함된 패키지에 더 높은 점수를 부여합니다. Go 및 Rust와 같은 다른 최신 프로그래밍 생태계에서 볼 수 있듯이 JSR은 즉시 자동 문서 생성 기능을 제공합니다.

JSR은 npm 레지스트리의 또 다른 클라이언트가 아니라 레지스트리 그 자체 입니다. 하지만 그렇다고 해서 npm의 모든 것을 포기하거나 자바스크립트 모듈의 분리된 생태계로 어렵게 전환해야 한다는 의미는 아닙니다. JSR은 npm 레지스트리를 대체하는 것이 아니라 보완하도록 설계되었습니다. JSR 패키지는 npm 패키지에 종속될 수 있습니다(예시: 이 패키지를 참조하세요). 또한 JSR 자체가 npm 호환 tarball을 배포하는 npm 레지스트리(npm.jsr.io에서 액세스 가능) 역할을 하기 때문에 기존 npm 우선 소프트웨어에서 JSR 패키지를 사용할 수 있습니다. 이를 통해 JSR 패키지는 npm, yarn 또는 pnpm을 사용하는 모든 소프트웨어에 포함될 수 있을 뿐만 아니라 비공개 레지스트리와 통합할 수 있습니다. JSR이 배포하는 npm tarball은 최적화되어 있습니다.

Deno는 자바스크립트 개발에 있어서 보안을 가장 중요하게 생각하고 있습니다. 어떤 레지스트리도 게시된 모든 코드를 포괄적으로 검토할 수는 없지만, JSR은 게시자에 대한 투명성을 제공하고 게시 과정의 안정성을 보장합니다. JSR은 OIDC 토큰을 깃허브 액션과 통합함으로써 소프트웨어 아티팩트에 대한 공급망 수준(Supply Chain Levels for Software Artifacts)에 따라 검증 가능한 고급 출처 증명을 생성하고 이를 Sigstore에 저장합니다. 이를 통해 코드의 신뢰성을 보장할 뿐만 아니라 개발자가 구현하는 내용에 대한 신뢰와 책임감을 확립합니다.

자바스크립트는 많은 프로그래머가 사용하는 공통 언어로, 보편적이면서도 접근성이 뛰어납니다. 이 언어는 개발자가 과도한 복잡성 없이 서로의 작업을 공유할 수 있는 중앙 허브(마치 마을 광장 같은)의 장점을 갖고 있습니다. 저희는 자바스크립트가 앞으로도 오랫동안 소프트웨어 개발의 중심이 될 것이라고 믿으며, JSR은 이러한 지속적인 관련성을 지원하는 것을 목표로 합니다. JSR은 패키지 관리자는 아니지만 코드를 관리하고 보호하는 방법에 대한 새로운 접근 방식을 제공하여 자바스크립트 개발을 강화하고 보호하는 안정적이고 미래 지향적인 플랫폼이 되고자 합니다. 이러한 방식으로 JSR은 생태계의 또 다른 도구가 아니라 자바스크립트와 타입스크립트 배포에 대한 사고 방식을 근본적으로 변화시키는 것을 목표로 합니다.

tweet from @robpalmer2 tweet from @slightlycode

tweet from @slicknet tweet from @michael_rispoli

profile
FrontEnd Developer

1개의 댓글

comment-user-thumbnail
2024년 7월 11일

잘 읽고 갑니다~

답글 달기