跳到正文
Hacker News· koculu·· 7 天前AI 评分22

PureStack:TypeScript 原生的前端静态站点框架

TypeScript-Native Frontend Framework

AI 导读

PureStack 是一个 TypeScript 原生的前端框架,把内容目录直接转成静态网站:页面用 Markdown 或 Regor MDX 编写,组件、样式构建器和脚本均以 TypeScript 存放,仅在页面需要交互时才加入浏览器端 TypeScript。

正文 · AI 翻译

你的内容。你的组件。一条流水线。

PureStack 将内容目录转换为静态网站。用 Markdown 或 Regor MDX 编写页面,在有用之处使用内置组件,仅在页面需要行为时添加浏览器端 TypeScript。CLI 负责路由、样式、资源、开发预览和发布构建。

PureStack capabilities: Markdown and Regor MDX content; panels, tabs, forms, and charts; typed styles and themes; PageScript and RegorApp browser behavior; static HTML, CSS, JavaScript, and assets; optional Pagefind search, navigation, and sitemaps.

PureStack 实践: purestack.studio 由本仓库中的前端源码构建而成。

为什么连贯的源码很重要

生成第一个页面只是开始。产品会不断变化:新内容、新组件、新行为,以及新加入的人。

PureStack 的架构赌注是:显式、带类型的源码能让这种持续的工作更容易被人类和 AI 工具检查和推理。内容保留在 Markdown 中;组件、样式构建器和脚本位于 TypeScript 中。目标是建立一个随着产品成长仍保持可理解的源码模型。

.mdx 和 .rmdx 页面使用 Regor 组件和表达式。纯 .md 文件适用于散文页面。有关标记和浏览器应用模型,请参阅 Regor 指南。

让你的第一个页面运行起来

1. 创建项目

mkdir my-site
cd my-site
npm init -y
npm install purestack
mkdir content

2. 添加配置和页面

你的起点只有两个文件:

my-site/
└── content/
    ├── siteConfig.json
    └── index.mdx

content/siteConfig.json

{
  "siteTitle": "My Site",
  "logo": { "brand": "My Site", "href": "/" },
  "outDir": "../dist/site",
  "publishDir": "../dist/publish"
}

content/index.mdx

---
title: Welcome
description: My first PureStack site.
template: doc
---

# Make something worth reading.

Start with Markdown. Add components when your page needs more.

<Panel tone="info" variant="surface">
  <p>Your first PureStack page, ready to make your own.</p>
</Panel>

3. 预览

npx purestack serve --content ./content

打开 http://127.0.0.1:4173/。添加 content/about.mdx 以创建 /about/。服务器会监视你的文件,并在你编辑时重新加载浏览器。

4. 为你的主机构建

npx purestack build --content ./content
npx purestack publish --content ./content

build 写入 dist/site。publish 在 dist/publish 中创建一个干净、压缩的产物;它准备部署文件但不会上传它们。两条路径都来自 siteConfig.json,并相对于 content 解析。

对于浏览器行为,在页面旁边添加一个 TypeScript 文件,并用 <PageScript src="./example.ts" /> 加载它。purestack 包 README 有一个完整的示例。

选择你的下一步

我想… 从这里开始
配置站点 站点配置
构建更丰富的页面 组件目录
添加浏览器行为 PageScript 和 RegorApp 示例
了解 CLI CLI 指南
探索一个完整项目 示例内容 · 网站源码
参与 PureStack 本身 贡献指南

PureStack 如何协同工作

源码 PureStack 做什么
siteConfig.json 定义输出路径、站点标识、主题、导航和可选功能。
.md、.mdx、.rmdx 将内容文件转换为路由和 HTML 页面。
Regor 组件 在构建时将 UI 渲染到页面中。
PageScript 和 RegorApp 打包 TypeScript,并在需要时添加浏览器行为。
静态资源 将文件从内容目录复制到站点输出中。

CLI 指南 涵盖命令和选项。站点配置 涵盖导航、主题、搜索、站点地图、本地化和输出路径。

仓库地图

工作区包含 CLI、站点生成器、UI 组件、带类型的 HTML/CSS 构建器、浏览器脚本、图标提供程序和私有 VS Code 扩展。

探索包和源码目录

路径 用途
packages/purestack 公共 purestack 包、CLI 和 TypeScript API。
packages/ts-ssg 内容发现、渲染、路由、构建和开发服务器。
packages/ts-components 内置 UI 组件和组件元数据。
packages/ts-style 主题、皮肤、排版和样式生成。
packages/ts-css 和 packages/ts-html 带类型的 CSS 和 HTML 构建器。
packages/ts-page-scripts 站点组件使用的浏览器端行为。
packages/ts-svg-icons SVG 图标提供程序和查找。
packages/ts-ssg-vscode 用于 PureStack 内容和组件的私有 VS Code 扩展。
frontend purestack.studio 的源码,使用 PureStack 构建。
packages/ts-ssg/sample-content 一个更大的示例站点,包含内容、组件和浏览器脚本。

其余工作区包提供共享类型、工具函数、渲染和 DOM 支持。

开发此仓库

有关分支、拉取请求、CI 和发布工作流,请参阅 Contributing。

使用 Node.js 24 以及 package.json 中固定的 Yarn 版本。 从仓库根目录运行命令:

corepack enable
yarn install --immutable
yarn build
yarn dev

yarn dev 用于提供包含的示例站点。若要开发 PureStack 网站, 请运行 yarn frontend;其开发服务器在 http://127.0.0.1:4700/ 打开。有关站点特定的工作流,请参阅 前端 README。

命令 用途
yarn lint:ci 检查源代码而不修改文件。
yarn test:ci 运行一次测试套件。
yarn bundle 构建可分发的包。
yarn package 将非私有工作区打包为本地 tarball。

来源:Hacker News · github.com