JSR (JavaScript Registry)
-
pnpm 릴리즈 노트를 보다가, JSR 을 지원한다는게 있어서 이게 뭔가하고 찾아봄!
-
JSR은 npm의 슈퍼셋임.
- 따라서 JSR 모듈은 기존의 모든 JavaScript 패키지 관리자 (npm, yarn, pnpm 등)와 함께 사용할 수 있음.
- node_modules 가 있는 프로젝트에서는 무조건 사용가능함.
- jsr 패키지는 Publishing packages 가이드에 따라서 배포가능함.
npm install @jsr/pacakge-name
- 패키지매니저가 아님! 패키지 레지스트리임!
- 패키지 매니저 - 패키지를 install 하는 툴
- 패키지 레지스트리 - 패키지를 저장하는 서버
그래서 왜 npm Registry 보다 나을까?
- 현재의 웹플랫폼은 CommonJS 를 대체하고 ESM을 채택하고 있음.
- Node.js와 브라우저 외에도 많은 JS 런타임이 존재함 (Deno, Bun, workered..) 따라서, Node.js 중심의 패키지 레지스트리는 더이상 전체 JS 생태계에 적합하지 않음.
- 또한, TypeScript 가 표준으로 자리잡고 있음. 따라서 모던 레지스트리는 TypeScript를 염두해두고 설계되어야함.
1. 네이티브 타입스크립트 지원
- TypeScript 소스파일이 직접 JSR에 퍼블리시 된다.
- Deno와 같이, TypeScript를 기본적으로 지원하는 플랫폼은 이러한 파일을 직접 사용 가능함.
- 네이티브 TypeScript 지원이 없는 다른 환경의 경우, JSR은 소스코드를 JS로 변환하고, d.ts 파일과 함께 모듈을 배포함.
2. ECMAScript 모듈만 지원
3. 크로스 런타임 지원
- JSR은 Deno 및 node_modules를 채우는 다른 npm환경과 함께 작동함.