macrominds / website-lib
基于纯Markdown文件和YAML前端语法的简单网站库
v1.0.0
2023-09-17 09:43 UTC
Requires
- php: ^8.0
- ext-intl: *
- erusev/parsedown: ^1.7
- erusev/parsedown-extra: ^0.8.1
- macrominds/app: ^2.0.0
- monolog/monolog: ^2.0
- pimple/pimple: ^3.2
- symfony/http-foundation: ^5.0
- symfony/yaml: ^5.0
- twig/intl-extra: ^3.0
- twig/twig: ^3.0
- vlucas/phpdotenv: ^5.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- phpmetrics/phpmetrics: ^2.6
- phpunit/php-code-coverage: ^9.2
- phpunit/phpunit: ^9.5
This package is not auto-updated.
Last update: 2024-09-15 14:18:41 UTC
README
使用此简单框架创建带有
本框架旨在提供灵活性,因此可能支持其他模板引擎、元数据和内容语言。目标是能够用json替换YAML,用Asciidoctor替换Markdown,用blade替换Twig等。
请参阅文档了解设置、使用和自定义信息。
扩展和自定义
您可以替换默认服务(见\Macrominds\AppServiceProvider)。
您可以通过将单例或多个对象工厂绑定到容器中来实现此操作。这样,您就可以覆盖设置或添加新的绑定。
use Macrominds\App;
use Macrominds\Processing\TemplateEngine\TemplateEngine;
use Symfony\Component\HttpFoundation\Request;
$app = new App(realpath(__DIR__ . '/..'));
$app->getContainer()->singleton(
TemplateEngine::class,
function(): TemplateEngine {
return new MyVeryOwnTemplateEngine();
}
);
$app->getContainer()->factoryObject(
Request::class,
function(): Request {
return new MyCustomizedRequest(/*…*/);
}
);
$app->getContainer()->resolve(Request::class)->myCustomRequestMethod();
一个示例用法是手动调试某个请求
use Macrominds\App;
use Symfony\Component\HttpFoundation\Request;
$app = new App(realpath(__DIR__ . '/..'));
// …
// always request /404.html
$app->getContainer()->factoryObject(Request::class, function() {
return Request::create('/404.html');
});
测试此项目
运行 ./vendor/bin/phpunit
以运行测试。
要创建代码覆盖率报告,运行 ./code-coverage-report.sh
。然后您可以通过访问report/coverage/index.html 来查看报告。
自动测试和Docker镜像
此项目提供了一个.gitlab-ci.yml文件,因此使用了GitLab CI/CD。
Docker镜像继承了macrominds/app php.df。这两个Docker文件都使用了构建参数来指定composer和php版本。
在本地构建Docker镜像
$ ./ci.bash build-all-local
在容器内运行phpunit
$ docker run -it --rm -v $(pwd):/var/www/html macrominds/website-lib:php73 vendor/bin/phpunit
$ docker run -it --rm -v $(pwd):/var/www/html macrominds/website-lib:php74 vendor/bin/phpunit
$ docker run -it --rm -v $(pwd):/var/www/html macrominds/website-lib:php80 vendor/bin/phpunit
为GitLab CI构建并发布镜像(也请参阅gitlab文档)
$ ./ci.bash build-all-remotes-and-publish
代码质量
使用phpmetrics测量当前代码质量
$ ./phpmetrics-report.sh
待办事项
- 支持symfony路由,为更复杂的网站提供更多功能,并在需要时动态添加单个资源路由
- 对于块,与其使用
<div class="block" markdown="1">
,不如允许在内容文件中存在多个Markdown部分(例如,用---
分隔) - 查看是否可以在
Macrominds\TemplateEngine\Builder
中删除标准IntlExtension并将其设置为可选的。它需要“ext-intl”,并非每个网站都需要。 - 观察erusev/parsedown和erusev/parsedown-extra上的活动不足,并决定是否应该切换到另一个库。thephpleague/commonmark看起来像是一个有希望的替代方案。