快速开始
组件以 shadcn registry 形式分发:CLI 把源码写进你的项目,依赖自动安装。不需要等 npm 包,也不会有版本锁死。
下面是本站直接加载的真实组件(不是截图),可以直接编辑、选中文字、切换变体:
1. 准备项目
只需要 Vue 3。不要求 Tailwind、不要求 shadcn-vue 初始化。
- 如果项目已经初始化过 shadcn-vue(有
components.json),文件会装到aliases.components(默认@/components)。 - 如果是普通 Vue 3 / Vite 项目,先跑一次
init生成components.json即可,它只用来决定文件位置:
bash
pnpm dlx shadcn-vue@latest init组件的样式全部是自带的普通 CSS(style.css + CSS 变量),没有 Tailwind 类名依赖,也没有 Preflight 依赖。
2. 安装组件
bash
pnpm dlx shadcn-vue@latest add https://raw.githubusercontent.com/guygubaby/editorcn-vue/main/registry/editor.json安装结果:
src/components/editor/
├── index.ts # RichTextEditor 与所有控件
├── style.css # 编辑器样式
├── rte-*.vue
├── bubble-menu-*.vue
└── ...导入:
ts
import { RichTextEditor } from "@/components/editor";
import "@/components/editor/style.css";其他三个包按需安装,命令见 registry。
3. 最小可用编辑器
vue
<script setup lang="ts">
import StarterKit from "@tiptap/starter-kit";
import TextAlign from "@tiptap/extension-text-align";
import Placeholder from "@tiptap/extension-placeholder";
import { useEditor } from "@tiptap/vue-3";
import { Link, CodeBlock, RichTextEditor } from "@/components/editor";
import "@/components/editor/style.css";
import "@/app.css"; // 你的全局样式,包含 shadcn 变量
const editor = useEditor({
content: "<h2>你好</h2><p>开始输入…</p>",
extensions: [
StarterKit.configure({ link: false, codeBlock: false }),
Link,
CodeBlock,
TextAlign.configure({ types: ["heading", "paragraph"] }),
Placeholder.configure({ placeholder: "开始输入…" }),
],
});
</script>
<template>
<RichTextEditor :editor="editor">
<RichTextEditor.Toolbar sticky>
<RichTextEditor.ControlsGroup>
<RichTextEditor.Bold />
<RichTextEditor.Italic />
<RichTextEditor.Underline />
</RichTextEditor.ControlsGroup>
<RichTextEditor.ControlsGroup>
<RichTextEditor.H1 />
<RichTextEditor.H2 />
<RichTextEditor.Link />
<RichTextEditor.Undo />
<RichTextEditor.Redo />
</RichTextEditor.ControlsGroup>
</RichTextEditor.Toolbar>
<RichTextEditor.Content>
<RichTextEditor.BubbleMenu :editor="editor ?? null" />
</RichTextEditor.Content>
<RichTextEditor.Footer show-word-count />
</RichTextEditor>
</template>4. 样式顺序
style.css 依赖 shadcn 的 CSS 变量(--border、--background、--muted、--radius 等),请在全局样式之后导入。没有 Tailwind 的项目,把 主题与样式 里的变量块贴进全局 CSS 即可。
注意事项
- 图标默认来自
@lucide/vue,安装时会自动加入依赖。 - 每个控件对应的 Tiptap 扩展需要你自己注册(例如
TextAlign、Highlight、TaskList),控件只在扩展存在时才能真正生效。 - 组件使用
@tiptap/vue-3的Editor类型;编辑器实例由你创建和销毁。