我们来聊聊 Jamstack 的未来 — 加入我们

Sphido

33 个星
0 个分岔
0 个问题
主页
https://sphido.org/
代码库
sphido/sphido
Twitter
@sphidocms
编程语言
JavaScript、Node.js
许可证
MIT
模板
任何 JS

我知道,另一个 静态网站生成器!这个不一样 - 它极简。从本质上讲,它只是两个函数。第一个,getPages() 函数,允许你检索页面列表,并且 allPages() 函数允许你迭代它们。

你将获得一个

  • 🚀 火箭般快速的
  • 💭️ 轻量级的
  • 🤘 无依赖项的
  • ⚡️ 灵活的

静态网站生成器

  • 支持
  • YAML 页眉
  • html/markdown 源文件
  • 定制扩展程序

任何 JS 模板

yarn add @sphido/core # that's all

安装

#!/usr/bin/env node

import {dirname, relative, join} from 'node:path';
import {getPages, allPages, readFile, writeFile} from '@sphido/core';
import slugify from '@sindresorhus/slugify';
import {marked} from 'marked';

const pages = await getPages({path: 'content'}, // ... extenders
	(page) => {
		page.slug = slugify(page.name) + '.html';
		page.dir = dirname(page.path);
	});

for (const page of allPages(pages)) {
	page.output = join('public', relative('content', page.dir), page.slug);
	page.content = marked(await readFile(page.path));
	await writeFile(page.output, `<!DOCTYPE html>
        <html lang="en" dir="ltr">
        <head>
            <meta charset="UTF-8">
            <script src="https://cdn.tailwindcss.com?plugins=typography"></script>
            <title>${page.name} | Sphido Example</title>
        </head>
        <body class="prose mx-auto my-6">${page.content}</body>
        <!-- Generated by Sphido from ${page.path} -->
        </html>
    `);
}

用法

node index.js

运行脚本

需要更多示例吗?

让我们看看 sphido.org 的源码示例代码库