SwiftySites

使用 Swift 从 Markdown 生成静态站点。

入门指南

首先为您的站点创建一个文件夹。

mkdir MySite
cd MySite

初始化为一个可执行的 Swift Package。

swift package init --type executable

编辑您的 package.swift,首先将平台设置为 macOS 11,并将 SwiftySites 添加为 package 和 target 的依赖项。

let package = Package(
    name: "MySite",
    platforms: [.macOS(.v11)],
    dependencies: [
        .package(url: "https://github.com/swiftysites/swiftysites.git", from: "1.0.0-beta.1")
    ],
    
    targets: [
        .executableTarget(
            name: "MySite",
            dependencies: [.product(name: "SwiftySites", package: "swiftysites")]),
            
        
    ]
    
)

用一些内容填充您的站点。

cat >> Sources/MySite/home.swift << EOF
import Foundation
import SwiftySites

let homePage = Page(
    file: URL(fileURLWithPath: "/"),
    title: "Home Page",
    markdown: """
    # Welcome
    
    This is the Home Page.
    
    """
)
EOF

以及一些模板。

cat >> Sources/MySite/homeTemplate.swift << EOF
import SwiftySites

let homeTemplate = BasicSite.templateA(match: #"/"#, suffix: "html") { site, page in
    """
    <html>
    <head><title>\(page.title)</title></head>
    <body>
        <div>
            \(page.content)
        </div>
    </body>
    </html>
    """
}
EOF

为了将它们联系起来,让我们在 main.swift 中定义站点本身。

rm Sources/MySite/main.swift

cat >> Sources/MySite/main.swift << EOF
import SwiftySites

BasicSite(
    SiteConfig(title: "My Site"),
    contentA: [homePage],
    templates: [homeTemplate]
).render()
EOF

提示:查看 Samples 文件夹,了解有关如何编写和组织内容文件的更多示例。

最后构建并运行您的可执行文件以生成您的静态站点!

swift run

所有生成的文件都将在 www 文件夹中。

启动一个 Web 服务器以在本地发布您的静态站点。

python -m http.server --directory www

将您的浏览器指向 https://:8000/index.html 以查看您的站点。

贡献

生成 DocC

使用以下命令

swift package --allow-writing-to-directory [output-directory-path] \ 
    generate-documentation --target [target-name] --disable-indexing \
    --output-path [output-directory-path] \
    --transform-for-static-hosting \
    --hosting-base-path [hosting-base-path]