node_modules),样式与行为完全由你掌控。
什么场景适合用 shadcn/ui
- 你需要在 sidebar、popup 与 options 等界面之间复用可用的 UI 原子组件。
- 你在产品代码里已经使用 React + Tailwind。
- 你希望组件由源码自有,团队可以完全自定义。
shadcn/ui 的能力
| 能力 | 它能带来什么 |
|---|---|
| 源码自有的 UI 组件 | 把生成的 components/ui/* 文件纳入项目版本管理 |
| 与 React + Tailwind 对齐 | 与现代 web 应用栈使用同一套写法 |
| 扩展界面复用 | 在 sidebar、popup 与 options 页面之间共享组件原子 |
| 渐进式采用 | 从模板开始,随后按需扩大组件覆盖范围 |
模板示例
Sidebar + shadcn/ui 模板
把sidebar-shadcn 模板作为默认起点:

技术栈假设
- React + TypeScript
- Tailwind CSS
- PostCSS(
@tailwindcss/postcss) - 本地
components/ui/*组件文件(shadcn 风格的结构)
在现有项目中手动配置
- 设置 Tailwind 和 PostCSS(参见 Tailwind CSS)。
- 在项目里初始化 shadcn 并生成组件。
- 把生成的 UI 组件放在扩展源码里(例如
src/components/ui/)。 - 在需要渲染 UI 的扩展入口中引入 Tailwind 样式表。
PostCSS 示例(Tailwind v4)
components.json 示例
用法
通过本地导入使用生成的组件:Content script 注意事项
- 扩展页面(popup/options/sidebar/新标签页)是最容易上手 shadcn/ui 的地方。
- 对于 content script,在 content script 入口中引入你的样式入口文件。
- Extension.js 通过其 CSS 管线输出 content script 的样式,但它们仍可能与宿主页面的样式冲突。
最佳实践
- 把 shadcn/ui 视作源码自有的组件,而不是运行时引入的 UI 包。
- 让 Tailwind 的配置与 content 路径与扩展目录保持一致(
pages、scripts、src)。 - 先从一个界面(比如 sidebar 或 popup)开始,再去面对 content script 渲染的复杂度。
- 把共享的 token 与工具函数放到专门的文件里(
lib/utils、设计 token、主题变量)。
下一步
- 如果还没有,先设置 Tailwind CSS。
- 用 ESLint 和 Prettier 增加 lint 与格式化。

