From e169eae2dced0dc9eb4f3c779cd603cd9feb581e Mon Sep 17 00:00:00 2001 From: yulonger's MacBook Pro 14 Date: Sat, 29 Aug 2026 18:59:58 +0800 Subject: [PATCH] feat: add content repository example --- examples/content-repo/.env.example | 2 + .../.github/workflows/deploy-pages.yml | 51 ++++++ .../.vscode/easy-slides.code-snippets | 28 ++++ examples/content-repo/.vscode/extensions.json | 7 + examples/content-repo/.vscode/settings.json | 10 ++ examples/content-repo/.vscode/tasks.json | 33 ++++ examples/content-repo/README.md | 19 +++ examples/content-repo/easy-slides.config.mjs | 7 + examples/content-repo/package.json | 14 ++ examples/content-repo/pnpm-workspace.yaml | 2 + .../slides/getting-started/assets/cover.svg | 12 ++ .../slides/getting-started/slides.md | 155 ++++++++++++++++++ 12 files changed, 340 insertions(+) create mode 100644 examples/content-repo/.env.example create mode 100644 examples/content-repo/.github/workflows/deploy-pages.yml create mode 100644 examples/content-repo/.vscode/easy-slides.code-snippets create mode 100644 examples/content-repo/.vscode/extensions.json create mode 100644 examples/content-repo/.vscode/settings.json create mode 100644 examples/content-repo/.vscode/tasks.json create mode 100644 examples/content-repo/README.md create mode 100644 examples/content-repo/easy-slides.config.mjs create mode 100644 examples/content-repo/package.json create mode 100644 examples/content-repo/pnpm-workspace.yaml create mode 100644 examples/content-repo/slides/getting-started/assets/cover.svg create mode 100644 examples/content-repo/slides/getting-started/slides.md diff --git a/examples/content-repo/.env.example b/examples/content-repo/.env.example new file mode 100644 index 0000000..d2cb29c --- /dev/null +++ b/examples/content-repo/.env.example @@ -0,0 +1,2 @@ +# Convenience gate only. Use a long, non-obvious value in deployment settings. +PRESENTER_TOKEN=replace-with-your-presenter-token diff --git a/examples/content-repo/.github/workflows/deploy-pages.yml b/examples/content-repo/.github/workflows/deploy-pages.yml new file mode 100644 index 0000000..2079e6d --- /dev/null +++ b/examples/content-repo/.github/workflows/deploy-pages.yml @@ -0,0 +1,51 @@ +name: Deploy easy-slides to GitHub Pages + +on: + push: + branches: [main] + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + with: + version: 11.19.0 + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: pnpm + - run: pnpm install --frozen-lockfile + - run: pnpm check + env: + PRESENTER_TOKEN: ${{ secrets.PRESENTER_TOKEN }} + - run: pnpm build + env: + SITE_BASE: /${{ github.event.repository.name }}/ + PRESENTER_TOKEN: ${{ secrets.PRESENTER_TOKEN }} + - uses: actions/configure-pages@v5 + - uses: actions/upload-pages-artifact@v4 + with: + path: dist + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy + id: deployment + uses: actions/deploy-pages@v4 diff --git a/examples/content-repo/.vscode/easy-slides.code-snippets b/examples/content-repo/.vscode/easy-slides.code-snippets new file mode 100644 index 0000000..1051269 --- /dev/null +++ b/examples/content-repo/.vscode/easy-slides.code-snippets @@ -0,0 +1,28 @@ +{ + "New easy-slides page": { + "scope": "markdown", + "prefix": "slide-page", + "body": [ + "---", + "layout: ${1:default}", + "---", + "", + "## ${2:标题}", + "", + "${3:内容}", + "", + "" + ], + "description": "插入一页 easy-slides 幻灯片" + }, + "Smart image": { + "scope": "markdown", + "prefix": "slide-image", + "body": [ + "![${1:说明}](./assets/${2:image.png}){fit=\"${3:contain}\" position=\"${4:center}\" max-height=\"${5:60vh}\"}" + ], + "description": "插入带自动适配属性的图片" + } +} diff --git a/examples/content-repo/.vscode/extensions.json b/examples/content-repo/.vscode/extensions.json new file mode 100644 index 0000000..d4bfab4 --- /dev/null +++ b/examples/content-repo/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + "recommendations": [ + "antfu.slidev", + "vue.volar", + "davidanson.vscode-markdownlint" + ] +} diff --git a/examples/content-repo/.vscode/settings.json b/examples/content-repo/.vscode/settings.json new file mode 100644 index 0000000..883fe44 --- /dev/null +++ b/examples/content-repo/.vscode/settings.json @@ -0,0 +1,10 @@ +{ + "editor.wordWrap": "on", + "files.trimTrailingWhitespace": true, + "markdown.validate.enabled": true, + "markdownlint.config": { + "MD013": false, + "MD033": false, + "MD041": false + } +} diff --git a/examples/content-repo/.vscode/tasks.json b/examples/content-repo/.vscode/tasks.json new file mode 100644 index 0000000..ef55717 --- /dev/null +++ b/examples/content-repo/.vscode/tasks.json @@ -0,0 +1,33 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "easy-slides: preview current deck", + "type": "shell", + "command": "pnpm", + "args": ["dev", "--", "${file}"], + "isBackground": true, + "problemMatcher": [] + }, + { + "label": "easy-slides: present current deck", + "type": "shell", + "command": "pnpm", + "args": ["present", "--", "${file}"], + "isBackground": true, + "problemMatcher": [] + }, + { + "label": "easy-slides: check", + "type": "shell", + "command": "pnpm check", + "problemMatcher": [] + }, + { + "label": "easy-slides: build", + "type": "shell", + "command": "pnpm build", + "problemMatcher": [] + } + ] +} diff --git a/examples/content-repo/README.md b/examples/content-repo/README.md new file mode 100644 index 0000000..dd49766 --- /dev/null +++ b/examples/content-repo/README.md @@ -0,0 +1,19 @@ +# Slides content repository + +这是一个独立内容仓库示例。它只维护站点配置、Markdown 演示、资源、编辑器设置和部署工作流;渲染引擎来自 `@easy-slides/cli`。 + +如果不从 npm 发布或下载 easy-slides,把 `package.json` 中的版本替换为 Git tag(第三方依赖仍由 pnpm 从 registry 安装): + +```json +"@easy-slides/cli": "git+https://github.com/OWNER/easy-slides.git#v0.2.0" +``` + +```bash +pnpm install +cp .env.example .env +pnpm dev -- getting-started +pnpm present -- getting-started +pnpm build +``` + +Cloudflare Pages 使用构建命令 `pnpm build` 和输出目录 `dist`。GitHub Pages 使用 `.github/workflows/deploy-pages.yml`,并从 Actions Secret 注入 `PRESENTER_TOKEN`。 diff --git a/examples/content-repo/easy-slides.config.mjs b/examples/content-repo/easy-slides.config.mjs new file mode 100644 index 0000000..da3e62c --- /dev/null +++ b/examples/content-repo/easy-slides.config.mjs @@ -0,0 +1,7 @@ +export default { + title: 'Engineering Slides', + description: '使用 Markdown 维护的公开演示', + slidesDir: 'slides', + outDir: 'dist', + exportDir: 'exports', +} diff --git a/examples/content-repo/package.json b/examples/content-repo/package.json new file mode 100644 index 0000000..17837f0 --- /dev/null +++ b/examples/content-repo/package.json @@ -0,0 +1,14 @@ +{ + "name": "easy-slides-content-example", + "private": true, + "scripts": { + "dev": "easy-slides dev", + "present": "easy-slides present", + "build": "easy-slides build", + "check": "easy-slides check", + "export": "easy-slides export" + }, + "devDependencies": { + "@easy-slides/cli": "^0.2.0" + } +} diff --git a/examples/content-repo/pnpm-workspace.yaml b/examples/content-repo/pnpm-workspace.yaml new file mode 100644 index 0000000..c3f4b77 --- /dev/null +++ b/examples/content-repo/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +allowBuilds: + playwright-chromium: false diff --git a/examples/content-repo/slides/getting-started/assets/cover.svg b/examples/content-repo/slides/getting-started/assets/cover.svg new file mode 100644 index 0000000..96a0fc4 --- /dev/null +++ b/examples/content-repo/slides/getting-started/assets/cover.svg @@ -0,0 +1,12 @@ + + easy-slides JYY theme cover + A restrained deep blue and warm gray 4:3 presentation cover. + + + + + + easy-slides + Markdown → Presentation + 清晰、克制、适合投影 + diff --git a/examples/content-repo/slides/getting-started/slides.md b/examples/content-repo/slides/getting-started/slides.md new file mode 100644 index 0000000..83b9b3c --- /dev/null +++ b/examples/content-repo/slides/getting-started/slides.md @@ -0,0 +1,155 @@ +--- +theme: easy-jyy +title: easy-slides 快速开始 +description: JYY 风格 Markdown 演示引擎的功能示例 +author: easy-slides +date: 2026-08-27 +tags: + - Markdown + - Slidev + - JYY Style +cover: ./assets/cover.svg +transition: fade-out +mdc: true +drawings: + persist: false +--- + +# easy-slides + +> 写 Markdown,推送 Git,分享一场清晰的演示。 + + + +--- +layout: default +--- + +## 内容优先 + + + +- 在 VS Code 中实时编辑 +- 自动处理图片比例与可用空间 +- 使用 Vue、Mermaid、KaTeX 和代码高亮 +- 推送 Git 后部署到 Cloudflare Pages 或 GitHub Pages + + + + + +--- +layout: two-cols +class: easy-code-lg +--- + +## Markdown 与代码 + +::left:: + +### 数学公式 + +$$ +e^{i\pi}+1=0 +$$ + +::right:: + +### 代码高亮 + +```ts {2|3|all} +const deck = await discover('slides') +const pages = deck.filter(page => !page.draft) +await build(pages) +const published = pages.map(page => page.slug) +const artifacts = await exportSlides(pages) +await upload(artifacts) +await invalidateCache(published) +console.info(`Published ${published.length} decks`) +return { pages, published } +``` + + + +--- +layout: image-auto +image: ./assets/cover.svg +imageFit: contain +--- + +## 智能图片 + +- 默认保持原始比例 +- 宽图自动切换为上下结构 +- 不超出幻灯片内容区 +- 支持方向、contain、cover 和定位覆盖 + + + +--- +layout: default +--- + +## Markdown 图片属性 + +![easy-slides 示例封面](./assets/cover.svg){fit="contain" position="center" max-height="55vh"} + + + +--- +layout: default +--- + +## 文本生成图表 + +```mermaid +flowchart LR + A[编辑 Markdown] --> B[Vite 实时预览] + B --> C[构建静态站点] + C --> D[Cloudflare Pages] + C --> E[GitHub Pages] +``` + + + +--- +layout: default +--- + +## 表格尺寸预设 + +
+ +| 预设 | 字号 | 单元格留白 | +| --- | ---: | ---: | +| 小 | 24px | 7px × 10px | +| 中(默认) | 30px | 10px × 14px | +| 大 | 36px | 13px × 18px | + +
+ + + +--- +layout: quote +--- + +> 内容决定表达,样式帮助内容被看见。 + +