@djangocfg/widget-kit

中文文档
0.1.24发布于 2026/11/11MITTypeScriptES Module近 30 天下载 5548

Shared ground for the djangocfg widgets: formatters, lazy-loading placeholders and the one code block (Prism) every surface must agree on

原始使用文档
文档目录4 节
  1. What is here
  2. Placeholders
  3. The entry price
  4. Verify

@djangocfg/widget-kit

Shared ground for the djangocfg widgets: what more than one surface has to agree on, and nothing else.

A widget may depend on this. This depends on no widget.

What is here

SubpathExports
. / ./formatformatBytes, formatClock; normalize, basename, extension, dirname, segments, isAbsolute, unquote, elidePath, elideName, elidePathLine
./pretty-codePrettyCode (Prism listing: header, copy, wrap, light/dark, compact, pending), CodePanelHeader, languageLabel, normalizePrismLanguage, ensurePrismLanguages, useEnsurePrismLanguages
./pretty-code/lazyLazyPrettyCode, the same component behind a lazy boundary
./lazycreateLazyComponent, LazyWrapper, Spinner, and the placeholders LoadingFallback, InlineLoadingFallback, CardLoadingFallback, MapLoadingFallback; configureLazyCopy

./lazy is not re-exported from the root, and that is the one deliberate exclusion: it is React and pulls @djangocfg/ui-core behind it, while the root is pure. A consumer wanting formatBytes must not pay for a component tree.

import { formatBytes, formatClock, elidePathLine } from '@djangocfg/widget-kit';

formatBytes(1536);                       // '1.5 KB'   — binary steps
formatClock(214);                        // '3:34'     — a track, not a duration
elidePathLine('/very/long/path.txt', 24) // '…/path.txt'

Placeholders

import { createLazyComponent, MapLoadingFallback } from '@djangocfg/widget-kit/lazy';

export const LazyMap = createLazyComponent(
  () => import('./MapContainer').then((m) => ({ default: m.MapContainer })),
  { displayName: 'LazyMap', fallback: <MapLoadingFallback minHeight={400} /> },
);

Copy is a typed object resolving to English, not a t(key) lookup: a placeholder renders in stories, tests and server passes — the three places least likely to have mounted a provider. Replace it once at startup with configureLazyCopy({ loading: '…' }).

The entry price

Nothing lands here on the strength of looking reusable — a second consumer is the entry price. A one-consumer helper in a shared package is a helper in the wrong package: it is now a public API, it constrains the widget that owns it, and nobody can change it without checking a caller that does not exist.

The point of the package is the opposite property: the same byte count must not format differently across two surfaces.

Verify

pnpm --filter @djangocfg/widget-kit check-types test

版本与发布记录

@djangocfg/widget-kit 共发布 20 个版本,首次发布于 2026/09/09;过去 12 个月发布了 20 个版本。

版本发布日期距今
0.1.24latest2026/11/111 天前
0.1.232026/11/111 天前
0.1.222026/11/102 天前
0.1.212026/11/102 天前
0.1.192026/11/057 天前
0.1.182026/11/047 天前

关于 @djangocfg/widget-kit 的常见问题

@djangocfg/widget-kit 是什么?

Shared ground for the djangocfg widgets: formatters, lazy-loading placeholders and the one code block (Prism) every surface must agree on

如何安装 @djangocfg/widget-kit?

在项目目录运行 npm install @djangocfg/widget-kit,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^19.0.0)、lucide-react(^1.68.0)、@djangocfg/i18n(^2.1.648)、@djangocfg/ui-core(^2.1.648)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@djangocfg/widget-kit 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@djangocfg/widget-kit 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@djangocfg/widget-kit 可以商用吗?

@djangocfg/widget-kit 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@djangocfg/widget-kit 的下载量有多少?

根据 npm 官方下载统计,@djangocfg/widget-kit 在 2026/10/13 – 2026/11/11 这 30 天内被下载 5,548 次,日均约 185 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@djangocfg/widget-kit 还在维护吗?

最新版本 0.1.24 发布于 2026/11/11(1 天前);至今共发布 20 个版本,其中过去 12 个月发布了 20 个;首次发布于 2026/09/09。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。