最近在爱尔兰举行的 NodeConf EU
上,NPM 作者正式宣布,推出全新的 JavaScript 包管理器 vlt 及 Serverless 注册表 vsr!
首先,我们隆重推出 vlt——一款全新的、免费且开源的 JavaScript 包管理器。vlt 超越了传统的包管理器,奠定了一个强大、集成的平台基础,旨在简化你的开发流程。我们有过类似的经验。我们的团队成员包括 npm 的创造者和维护者,对依赖管理的开发工具有着深厚的理解和极大的关注。
此次首发版本带来了令人印象深刻的 Node.js 依赖安装和管理能力。在大多数情况下,vlt 可以直接替换你现有的包管理器。乍一看,vlt 客户端可能与普通的包管理器类似,但我们兴奋地推出了一些创新功能,如全新的依赖查询选择器语法、各种导出格式(包括 Mermaid)以及直观的图形界面体验,帮助开发者更轻松地理解项目的依赖关系图。
vlt:全新的 JavaScript 包管理器
vlt 是一款免费的开源 JavaScript 包管理器,旨在超越传统的包管理器,为开发者提供强大而集成的开发平台。
主要特点:
- 高性能的安装和管理:提供出色的 Node.js 依赖安装和管理能力,大多数情况下可直接替代现有的包管理器。
- 创新的依赖查询选择器语法:简化了依赖项的查询和管理,使开发者能够更灵活地处理项目依赖。
- 丰富的导出格式:支持包括 Mermaid 在内的多种导出格式,方便生成依赖关系图。
- 直观的 GUI 界面:通过图形界面,帮助开发者轻松理解和探索项目的依赖关系图。
安装方法:
要尝试使用 vlt,只需在终端中运行以下命令:
npm install -g vlt
# 注意:我们也意识到使用 npm 安装 vlt 的讽刺意味……
安装完成后,即可开始体验 vlt 带来的高效包管理体验。
主要功能
提供了丰富的客户端 CLI 指令:
提供了多种依赖关系可视化效果:
- 可读格式:以树结构展示数据,使嵌套关系更容易理解,方便开发者快速掌握依赖结构。
- JSON:适合在系统间进行数据交换,以可读型和机器友好的方式表示信息,确保数据的无缝传递。
- Mermaid:使用 Mermaid 语法创建可视化图表,帮助开发者展示复杂的数据流或层次结构,让依赖关系一目了然。
vlt 的图形界面(GUI)使得探索和理解项目的依赖关系变得更加简单直观。
通过命令行使用如下查询语句,可以在浏览器中查看具体项目的依赖关系图:
vlt query '[name="my-project"] > :is(:project > *[name="tap"][version="21.0.1"])' --view=gui
或者,你也可以快速打开 GUI 以仪表盘视图查看你的项目:
vlt gui
这将启动图形界面,让你更轻松地管理和分析项目的依赖情况。
vsr:下一代 Serverless 包注册表
除了 vlt 客户端,本次还推出了一个与 npm 兼容的 Fair Source Serverless 包注册中心——vsr。该平台利用无服务器计算的强大功能,提供了一个可伸缩、安全且成本效益高的包托管解决方案。
vsr 支持多种开发和托管方式,无论你是想在本地开发、自行托管,还是为你管理一个实例,我们都能满足你的需求。
vsr 的初始版本提供了一个独特的权限模型,使开发者可以细粒度地控制各种功能的访问权限。细粒度访问令牌(Granular Access Tokens)为超越传统团队/维护者角色的用例创建了新的角色,并提供了只读访问私人包的能力,这是现有注册中心所无法实现的。
无论你是个人开发者、小型团队,还是大型企业 vsr 都可以帮助你实现更灵活、更安全的包管理和分发。
主要优势:
Serverless 架构:利用无服务器技术,实现高扩展性和降低运营成本,无需维护传统服务器。
高度兼容:vsr 与现有的 npm 客户端兼容,支持 npm、yarn、pnpm、deno 和 bun 等工具,确保开发者的平滑过渡。
安全 (Secure):vsr 确保安全地存储和管理依赖项,避免与公共注册中心相关的风险。提供了独特的权限模型,允许开发者细粒度地控制访问权限。通过 Granular Access Tokens,可以为不同的使用场景设定特定的权限,例如只读访问私有包。
掌控 (Controlled) :你可以完全掌控访问权限,确保只有授权用户或系统能够发布、访问或修改包。非常适合出售你自己的软件和软件订阅服务。
本地运行 (Local) :在本地运行私有包,用于测试、预发布和持续集成,确保各阶段的稳定性。
可靠 (Reliable) :降低对公共注册中心的依赖,减少因停机或关键包移除带来的风险。
稳定 (Stable) :锁定和管理特定版本的包,确保跨不同环境(开发、测试和生产)的稳定性和一致性。
快速高效 (Fast & Efficient) :由于接近性和缓存优化,vsr 相较于公共注册中心提供更好的性能,提高了依赖安装速度。
受监管 (Regulated) :在投入生产前可对第三方库进行审查和批准,强制执行使用策略。
合规 (Compliant) :提供一个审计路径,以追踪包的使用情况、变更和版本历史,确保符合法律、安全和业务要求。
可定制和灵活 (Customizable & Flexible): 根据特定组织需求定制无服务器注册中心,例如与内部系统集成和添加身份验证机制。
部署方式:
- 本地开发:适合个人或小型团队在本地环境中进行包管理和测试。
- 自行托管:企业或团队可以在自己的服务器上部署 vsr,掌控数据和访问权限。
- 托管服务:如果希望更省心的解决方案,可以选择由官方提供的托管服务。
细粒度访问令牌 (Granular Access Tokens)
细粒度访问令牌(GAT)提供了对谁可以与无服务器注册中心交互以及如何交互的精确控制。通过这些令牌,可以定义用户或系统能够执行的操作范围,确保访问权限与组织政策和角色保持一致。
客户令牌 (Customer Tokens):只读 (Read-only)
只读令牌提供安全、受控且可撤销的访问权限,支持企业在保护知识产权的同时,管理第三方的访问。
团队令牌 (Team Tokens):读写 (Read & Write)
创建只读和读写团队令牌,为组织内部的包管理提供全面且灵活的访问控制,允许协作和安全的包管理。
这些细粒度访问令牌让企业能够严格控制包的访问和分发,确保只有授权的用户或系统能够执行特定操作,从而提升了安全性和管理效率。
API 管理
通过 REST API 实现包和用户管理,为私有和开源包提供高效的工作流、安全的数据处理和强大的控制功能。
对比 Verdaccio 和 JSR
为了更好地了解 VSR 的竞争力,这里对比了 VSR 与 Verdaccio 和 JSR 三个平台的主要特点和优势。
VSR 的优势
- 无服务器 (Serverless) :VSR 支持无服务器架构,降低了基础设施维护的复杂性。
- JavaScript 后端 :专门为 JavaScript 后端开发设计,提供更高的兼容性和性能。
- 细粒度访问 (Granular Access) :提供精细的权限控制功能,确保用户和系统仅能执行授权的操作。
- 代理功能 (Proxy Capabilities) :支持代理配置,提升包管理的灵活性和安全性。
Verdaccio 的优势
- 插件支持 (Plugin Support) :Verdaccio 在插件支持上非常强大,易于扩展和定制。
- 事件/钩子 (Events/Hooks) :提供丰富的事件和钩子,便于集成和自动化处理。
- 多云功能 (Multi-Cloud Features) :支持多云环境,增强了部署和管理的灵活性。
JSR 的优势
- TypeScript 支持 :JSR 在 TypeScript 支持方面表现出色,更适合现代前端开发者的需求。
- API 文档 (API Documentation) :JSR 的 API 文档非常详细,便于开发者快速上手和集成。
共同覆盖的基本功能
- 包发布 (Package Publishing) :三大平台均支持包的发布,满足基本的包管理需求。
- 包安装 (Package Installation) :均支持包的安装,确保开发者能够轻松获取和使用所需的包。
- Azure DevOps 上游集成 :都提供与 Azure DevOps 的集成,方便在 CI/CD 流程中管理包。
最后
了解更多内容:
- vlt 官方网站:https://www.vlt.sh/client
- vsr 官方网站:https://www.vlt.sh/serverless-registry