thomas-redstone / site-build
一个简单的静态网站构建工具
Requires
- php: >=5.4.0
- erusev/parsedown: ^1.6
- league/plates: 3.*
- symfony/console: ~2.6
- symfony/yaml: ~2.6
Requires (Dev)
- phpmd/phpmd: ^2.3
- sebastian/phpcpd: *
- squizlabs/php_codesniffer: ^2.5
- dev-master
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.0
- 1.0.1
- 1.0.0
- dev-dependabot/composer/phpmd/phpmd-2.10.2
- dev-dependabot/add-v2-config-file
- dev-dependabot/composer/symfony/yaml-2.8.52
- dev-dependabot/composer/symfony/console-2.8.52
- dev-dependabot/composer/symfony/dependency-injection-2.8.52
- dev-dependabot/composer/erusev/parsedown-1.7.2
- dev-dependabot/composer/squizlabs/php_codesniffer-2.8.1
- dev-dependabot/composer/league/plates-3.3.0
- dev-dependabot/composer/sebastian/phpcpd-2.0.4
- dev-develop
This package is auto-updated.
Last update: 2024-09-23 13:16:30 UTC
README
SiteBuild旨在构建静态网站,其构建方式与构建动态网站相同。
它使用PHP,以及Plates PHP模板引擎,使事情保持简单。
对于每个网站,您需要创建一个如下的目录结构
- menus
- output
- pages
- resources
- themes
安装
composer global require thomas-redstone/site-build
将以下内容添加到您的.bashrc、.zshrc或任何需要修改路径变量的文件中!对于OSX或Linux,它可能如下所示:export PATH="$PATH:$HOME/.composer/vendor/bin"
我找到的最佳资源,解释如何修改路径,似乎来自Oracle的Java帮助页面,但对于PHP和composer仍然适用,因此如果您在Windows上,或几乎在任何操作系统上,以下内容应该会告诉您如何修改路径
https://java.com/en/download/help/path.xml
用法
首先,您必须确保在项目文件夹内存在一个包含站点名称的'app.yml'配置文件,例如。
name: ExampleSite
目前,此文件尚未使用,但必须存在,因为SiteBuild使用它作为确认正在正确目录中运行的依据。
接下来,运行sitebuild命令
sitebuild
此时,您应该有一个已填充的output目录。目录output/latest将始终包含最新生成的网站,您可以按照以下方式在本地测试它是否工作
cd output/latest && php -S localhost:8080
此时,您应该能够导航到https://:8080并查看您的网站。
菜单
菜单定义为.yml文件,目前只有一个主菜单将被使用,但计划在将来支持多个菜单。目前,主菜单应位于menus/main.yml中,格式如下
-
url: "/"
text: Home
-
url: "/about"
text: About
输出
生成的网站将放置在此处,目前每天都会有一个副本,这种行为可能会很快改变,并且将网站保留在版本控制中将是首选的方式,以确保始终可以回滚到以前的版本。
页面
网站内容位于pages目录中,这些文件都应该是.php文件,每个文件的开始部分应类似以下内容,模板将使用传递给它的数据来填充标题,并且提供的类将被应用于body元素,允许处理任何特定页面的样式。目前标签和日期字段未使用,但我计划不久后对其进行处理,它们是声明变量而非简单数组的原因之一,因为调用布局函数时声明了$config。
<?php
$config = [
'tags' => ['Documentation'],
'date' => '2015-12-11',
'title' => 'Documentation',
'class' => 'docs'
];
$this->layout('templates::template', $config);
?>
资源
放置在resources目录中的任何文件都将直接复制到输出目录,并保留任何文件夹结构,因此它是放置任何图像、样式表、javascript或其他资源的理想位置。
主题
主题位于模板本身的位置,我通常将我的主模板命名为'template',并有一个'menu',看起来如下
<ul class="nav nav-pills">
<?php foreach($menu as $menuItem): ?>
<li class='nav-item'><a class='nav-link' href='<?=$menuItem['url']?>'><?=$menuItem['text']?></a></li>
<?php endforeach; ?>
</ul>
计划
我大约3年前开始这个项目,在那段时间的大部分时间里,我没有做很多事情,最近我开始对其进行现代化。
我希望添加的一些功能包括
- 标签页面,使用单独页面中的标签
- 支持多个菜单
- 生成内容列表页面(如博客索引页面)
- 自动将生成的网站推送到Amazon S3
- 创建一个“示例项目”仓库,以便更容易开始
我很乐意听到任何反馈、错误报告或功能建议,所以请在问题跟踪器上提出问题,或者发送电子邮件至 thomas@redstone.me.uk。