npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

nusys-ui

v4.0.0

Published

Web components for creating Visual Studio Code extensions

Readme

nusys-ui

基于 Lit 的 Web Components 组件库,用于开发 VS Code 扩展,组件标签保留 vscode- 前缀。本仓库独立维护,项目地址为 171h/vscode-elements。

环境配置

使用 Node.js 22.12+(22.x)、24.x 或 26+,推荐 Node.js 24。项目固定使用 pnpm 12.8.1、Vite 8.3.2 和 Vitest 5.0.3。

安装 pnpm 后执行:

corepack enable
pnpm install --frozen-lockfile
pnpm test:install

packageManager 字段固定 pnpm 版本,pnpm-lock.yaml 锁定依赖;浏览器安装单独执行,不在依赖安装时隐式下载。Linux 的浏览器安装可能需要安装系统依赖的权限。

VS Code 工作区设置禁用 Vite 扩展的自动启动,打开项目不会自动执行 npx vite --port=4000。需要开发服务器时,手动运行 pnpm start。

开发、构建与测试

所有命令均在仓库根目录执行:

| 命令 | 用途 | | ------------------------------------- | ------------------------------------------------------------------------------------------- | | pnpm start / pnpm docs:dev | 构建组件并启动 VitePress 中文文档站点 | | pnpm dev | 与 pnpm docs:dev 相同,启动 VitePress 中文文档站点 | | pnpm build | Vite 构建模块入口与单文件压缩包,TypeScript 生成类型声明,再生成组件清单和 VS Code 补全数据 | | pnpm preview | 与 pnpm docs:preview 相同,预览生产文档站点 | | pnpm typecheck | 检查组件和测试的 TypeScript 类型 | | pnpm test | Vitest 执行 Chromium 组件测试与 Node.js 发布工具测试 | | pnpm test:watch | Vitest 监视模式 | | pnpm test:coverage | 执行测试并生成 V8 覆盖率报告 | | pnpm test:release | 仅执行发布工具测试 | | pnpm test:build | 验证模块导入、组件清单与单文件产物 | | pnpm test:install | 安装 Playwright Chromium 与所需系统依赖 | | pnpm lint / pnpm lint:fix | ESLint 检查 / 修复源码 | | pnpm prettier / pnpm prettier:fix | Prettier 检查 / 格式化仓库文件 | | pnpm analyze | 生成自定义元素清单 | | pnpm vscode-data | 从清单生成 VS Code HTML 和 CSS 补全数据 | | pnpm icons | 输出当前 Codicon 图标示例 | | pnpm checksize | 构建并报告单文件包的 gzip 字节数,支持 Windows | | pnpm clean | 删除生成产物 |

Vite 负责开发、生产构建和生产预览;不再使用 Wireit、Rollup 配置、Web Dev Server 或 Web Test Runner。组件库输出保留 dist/main.js、各组件入口、类型声明及 dist/bundled.js。模块构建将 Lit 等运行时依赖保留为外部导入,单文件构建包含运行时依赖。示例保留 @vscode-elements/webview-playground,提供十种 VS Code 主题以及减少动画、链接下划线和视图容器切换,保持与文档网站一致的环境模拟。

本地项目可使用 pnpm link 链接组件库,链接前先执行 pnpm build。浏览器测试使用真实 Chromium,保留布局、表单关联、焦点、键盘和原生鼠标行为;测试辅助库只提供 Lit fixture 和 DOM 结构比较。

文档

中文文档站点位于 docs,包含 快速开始、全部组件、源码 API 和 文档维护。执行 pnpm dev 或 pnpm docs:dev 后访问终端输出的地址(默认 http://localhost:5173)。Markdown、Vue 主题和示例数据支持热更新;组件源码和样式保存后自动重新构建并重载文档页,示例临时输入会重置。修改公共 API 或 JSDoc 后执行 pnpm docs:prepare 更新 API 文档。

pnpm docs:check 检查组件覆盖、示例与链接;pnpm docs:build 构建生产站点;pnpm docs:preview 预览站点;pnpm docs:test 构建并执行文档浏览器交互检查。输出位于 docs/.vitepress/dist/,通过 DOCS_BASE 支持子路径部署。综合体验 复用全部组件场景,导航栏统一管理主题和尺寸并保留预览状态。组件示例统一维护在 docs/,开发预览使用 pnpm dev 或 pnpm docs:dev。

pnpm docs:test:dev 在独立副本中验证 Markdown 热更新、组件源码和样式自动重载,以及编译错误后的恢复,不修改开发者的源码。

开发要求参见 AGENTS.md 和 CONTRIBUTING.md。工具链迁移与功能、性能验证结果参见 迁移报告。

标签页新增功能与交互约定参见 标签页溢出显示,涵盖换行、滚动、溢出菜单与标题图标布局。

悬浮提示的四向箭头、外部目标关联和字段持续提示参见 Tooltip 使用说明,组件页与综合体验页均提供可交互示例。

release

从干净的工作区运行 pnpm release。默认建议递增 patch 版本;可用 pnpm release -- minor、pnpm release -- major 或 pnpm release -- 3.1.0 指定其他版本。命令会提示确认最终的 v 前缀版本标签及发布操作。

发布新版本时,命令会更新 package.json 和组件版本(pnpm 锁文件不记录根包版本),根据上次发布以来的 Git 提交生成 CHANGELOG.md 条目,提交这些文件并创建标签。选择当前版本时仅创建或更新标签,保留现有变更日志。

确认推送后,分支和标签会推送到 origin,并自动启动 GitHub Actions 的 Release 工作流。该工作流构建、测试并将 nusys-ui 发布到 npmjs,随后使用 CHANGELOG.md 中的说明创建 GitHub 发布。请检查工作流是否完成;本地推送成功不代表 npm 发布已完成。

在仓库 Actions 中配置名为 NPM_TOKEN 的密钥,使其具有发布 nusys-ui 的权限,并可绕过无人值守发布的双因素认证。工作流通过 actions/setup-node 将其作为 NODE_AUTH_TOKEN 提供给 pnpm。GitHub 密钥仅在 Actions 中使用;本地命令需要 Git 推送权限,不需要 npm 令牌。包中的仓库地址必须与本仓库一致,以支持 npm 来源证明。

打标签的提交必须包含最新工作流。发布失败时,可手动运行 Release,并将 version_tag 设置为已有标签。已发布的 npm 版本会跳过;若包内容发生变化,应发布新版本。

文档与提交约定

本项目的文档相关文件与代码注释统一使用中文;命令、API 标识符、链接和工具指令保留原格式。所有后续提交必须遵循 Conventional Commits,提交描述与正文尽可能使用中文。详细要求参见 AGENTS.md。