@canonical/storybook-config

中文文档
0.45.0发布于 2026/10/23LGPL-3.0TypeScriptES Module构建来源已验证近 30 天下载 9919

Canonical的标准故事书配置厂

中文使用文档
文档目录6 节
  1. 开始
  2. 页:1
  3. 他们:两份文件,不是一份
  4. 为什么一个容器而不是 parameters.docs.theme
  5. 为什么容器住在这里 而不是在外壳主题附加物
  6. 洞穴

Canonical 故事书配置

这个包为Canonical的"故事本"项目提供了可再使用的配置工厂.

这个软件包,目前仅输出共享配置. 将来我们可能会利用工厂的模式 提供更定制的.

开始

  1. 在您的 React, Svelte 或 Web 组件故事本项目中, 用 bun add -d @canonical/storybook-config
  2. 替换 .storybook/main.ts 以
import { createConfig } from "@canonical/storybook-config";

export default createConfig("react"); // or one of "svelte", "sveltekit", "lit"

页:1

这个 自动文档 通过设置启用全项目特性 tags: ["autodocs"] 在预览级别,所以故事文件不需要声明标记本身(一个故事仍然可以选择退出 tags: ["!autodocs"]) (中文(简体) ).

此软件包导出共享预览配置( T)@canonical/storybook-config/preview),包括该默认。 然而,故事书静态地描述每个项目自己的 .storybook/preview.ts 无法可靠地接回 tags (或 storySort从导入预览中传播( )故事书js/故事书#31842) (中文(简体) ). 因此,已完成的项目必须申报 tags: ["autodocs"] 在他们自己的内线中 .storybook/preview.ts数字 :

import previewConfig from "@canonical/storybook-config/preview";

const preview = {
  ...previewConfig,
  tags: ["autodocs"],
};

export default preview;

他们:两份文件,不是一份

故事书制作成 两份单独的文件这是唯一的事实 大部分的困惑在这里减少.

  • 这个 管理器 边栏和工具栏 : addons.setConfig({ theme }),哪个 @canonical/storybook-addon-shell-theme 从管理器的切入点.
  • 文件页数 内部制取 预览 iframe管理者 主题永远无法到达它们。 由于没有自己的主题,故事书会回到 其内置的光线主题, 所以每个文件页面都编为未被命名的故事本 灰色,不管它周围的相框是什么样子。 这是 962号。 。 。 .

此软件包将关闭该缺口 : previewConfig 套装 parameters.docs.container 改为 src/DocsContainer.tsx,将 Canonical 主题传送到文档页面 并遵循读者的OS轻/暗偏好.

故事 内容 主题不属于这一范畴——属于 @canonical/storybook-addon-utils工具栏和 .light 编号 : .dark 课程.

为什么一个容器而不是 parameters.docs.theme

docs.theme 是一个纯参数,在渲染时读取。 该页将是 在负载上正确但不会跟随现场操作系统的变化——它需要重新装入 经理马上翻了过来 容器可以订阅 prefers-color-scheme。 。 。 .

为什么容器住在这里 而不是在外壳主题附加物

它看起来像它属于附加物, 移动它是明显的未来 重设. 断了. 那个加通的维特建立外部 storybook/* 不过 没有别的东西,所以捆绑反应和 @storybook/addon-docs 将船载入其中 第二次反应——容器叫钩子,所以复制件提出一个 无效的钩子呼叫 。 此软件包已携带 @storybook/addon-docs反应 类型和重现 TypeScript 配置,所以组件属于这里.

准确注意失败模式,因为明显的猜测是错误的:它是 没有 a 丢失的文档上下文. @storybook/addon-docs 将其背景放在 globalThis.__DOCS_CONTEXT__,第一个加载器获胜,特别是重复 捆绑共享一个实例。 反应是单子无法活下来的 已复制.

反应对于斯维尔特和利特故事书来说是安全的: @storybook/addon-docs 声明反应为硬依赖,容器通过文件生成 而不是作为故事的装饰者.

洞穴

  • 目前,工厂无法配置。 我们不知道通过自定义配置参数的最佳api是什么,如果有的话.
  • 这个故事书的配置暂时只执行一个反应/活化,活化/活化和活化的工厂. 我们认为,这可能会改变为使其他框架和工具相互协调.

版本与发布记录

@canonical/storybook-config 共发布 55 个版本,首次发布于 2025/02/13;过去 12 个月发布了 44 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.45.0latest2026/10/2317 天前
0.44.12026/10/081 个月前
0.44.02026/10/051 个月前
0.43.02026/10/011 个月前
0.42.02026/09/281 个月前
0.40.02026/09/211 个月前

关于 @canonical/storybook-config 的常见问题

@canonical/storybook-config 是什么?

Canonical的标准故事书配置厂

如何安装 @canonical/storybook-config?

在项目目录运行 npm install @canonical/storybook-config,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:typescript(^5.9.3 || ^6.0.0 || ^7.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@canonical/storybook-config 支持 TypeScript 吗?

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

@canonical/storybook-config 支持 ESM 还是 CommonJS?

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

@canonical/storybook-config 可以商用吗?

@canonical/storybook-config 使用 LGPL-3.0 许可。弱 Copyleft:作为库被调用时通常不要求开源你自己的代码,但修改库本身需以 LGPL 开源;前端打包合并后的适用边界存在不同理解。以上为概括,不构成法律意见,请以许可原文为准。

@canonical/storybook-config 的下载量有多少?

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

@canonical/storybook-config 还在维护吗?

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