• NPM 的替代方案?JSR 已推出公开测试版,快来尝鲜!
  • 发布于 2个月前
  • 149 热度
    0 评论
JavaScript 已成为世界上默认的编程语言。在浏览器、移动设备、机器人和服务器上运行时,您可以使用 JavaScript 对任何东西进行编程。在过去的 15 年中,Node 是这一转变的重要组成部分,但说到 Node 的成功,就不能不提到 npm 同样令人难以置信的成功。npm 拥有 250 多万个软件包,仅在过去 30 天内就有约 2500 亿次下载,可以说是世界上最成功的软件包注册中心。

如果没有 JavaScript 社区共同建立的这个令人难以置信的生态系统,JavaScript 可能不会有今天的地位。这应该成为 npm 上每一位模块作者的骄傲。

1)从 2009 年到 2024 年:
自 npm 首次发布以来,JavaScript 世界发生了许多变化。
.ESM 已经成为编写可重用 JavaScript 代码的网络标准,取代了 CommonJS。
.TypeScript 的出现不仅为编写 JavaScript 提供了一种编译时类型检查的方法,还为 TC39 推出的最新 JavaScript 语言功能提供了测试平台。

.Node 不再是浏览器之外唯一相关的 JavaScript 运行时。Deno、workerd(Cloudflare Workers)、Bun 等运行时以及未来的更多运行时都在 DX 上进行创新,更加贴近网络标准,并/或在设计上进行取舍,以便在边缘服务器上快速启动。


虽然 npm 仍是当今网络开发的基础组件,但它在设计时并未考虑到这些新的现实情况。因此,现在是时候重新设想 2024 年软件包注册表的工作方式了。
.它应将 ESM 作为 JavaScript 模块的网络标准
.它应从第一原则出发,为 TypeScript 而设计
.它应该简单、快速,并为开发人员提供卓越的体验
.它应该是免费的、开源的,并能在 JavaScript 能够运行的任何地方运行

.它应该建立在 npm 成功的基础上,而不是将其分叉


2)2024年02月09日:
2024年02月09日,Deno 推出新的 JavaScript 软件包 registry,即 npm 的替代方案 JSR(https://jsr.io)。当时还没有公开,需要提交 waitlist。

3)2024年03月01日
2024年03月01日,Deno 官方宣布,JSR 已推出公开测试版本,期望大家能注册并试用,有问题及时反馈。JSR 针对 TypeScript 进行了优化,仅支持 ES 模块。它可与 Deno 和基于 npm 的项目(Node、Bun、Cloudflare Workers 等)一起使用,并且免费开源。

JSR:新的软件包 Registry
1)NPM 已经存在,为什么还要创建 JSR?
.ESM 模块已成为标准,CommonJS 也逐渐被取代。
.在 Node 和浏览器之外出现了越来越多的 JavaScript 运行时,这使得以 Node 为中心的注册表不再适用。
.现在,TypeScript 已成为事实上的标准,因此需要一个能更好地支持 TypeScript 的现代注册表。

2) JSR 的核心特性:
.真正的 TypeScript 优先环境:高效的类型检查和无需转译的麻烦,可以直接使用TypeScript。
.编写和部署性能和易用性至上:通过集成的工作空间和无缝的NPM集成,JSR将易用性放在首位。
.安全和可访问的模块:JSR 中的所有模块都通过 HTTPS 公开,确保您的代码始终安全。
.开源,社区驱动:由开发者构建,为开发者构建,JSR由JavaScript社区的真实需求和贡献而塑造。
.仅限 ESM:JSR 仅支持 ECMAScript 模块,不支持 CommonJS。
.跨运行时支持:JSR 并非专为 Node 或 Deno 量身定制,而是旨在支持所有 JavaScript 运行时。

.npm 兼容性:JSR 提供了一个 npm 兼容层,方便在 Node 项目中使用。


3)快速上手:
你可以像这样安装软件包:
# deno
deno add @luca/flag

# npm (and npm-like systems)
npx jsr add @luca/flag
您可以像导入其他 ES 模块一样导入软件包:
import { printProgress } from "@luca/flag";
printProgress();
从命令行可以轻松发布自己的 TypeScript 和 JavaScript 模块:
# with deno installed (https://docs.deno.com/runtime/manual)
deno publish

# with npm-like systems
npx jsr publish
模块作为 TypeScript 源代码发布到 JSR。API 文档生成、类 Node 环境的类型声明和转译都由 JSR 处理。模块作者只需专注于编写 TypeScript。
更多参考:https://jsr.io/
用户评论