讓我們談談 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 的原始碼範例儲存庫

尋找更多靜態網站產生器