使用 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 以查看您的站点。
使用以下命令
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]