此包已被废弃且不再维护。作者建议使用charcoal/charcoal包。

Charcoal 框架单仓库

v5.0.0 2024-03-13 15:04 UTC

README


Charcoal
Locomotive 🚂

License Latest Stable Version Uses Semantic Release with Conventional Commits Commitizen-friendly Supported PHP Version

Charcoal 是一个适应所有项目需求的网络框架和内容管理系统。

此仓库是一个包含整个网络框架的单仓库。Charcoal 可以用作全栈框架,也可以作为独立的包使用。

Charcoal 包

核心包位于 packages 目录。

目录 分发 描述
admin charcoal/admin Charcoal 的管理仪表板。
app charcoal/app 基于 Slim 的网络应用程序层(容器、路由、控制器等)。
attachment charcoal/attachment 提供处理模型之间关系支持。
cache charcoal/cache 基于 Stash 的缓存层。
cms charcoal/cms 提供内容管理系统(CMS)工具和扩展。
config charcoal/config 大多数包构建在基础配置和实体层上。
core charcoal/core 模型、存储库和数据库层。
email charcoal/email 提供基于 PHPMailer 的发送电子邮件支持。
factory charcoal/factory 提供对象创建(工厂、构建器、类解析等)支持。
image charcoal/image 提供图像处理和操作支持。
object charcoal/object 提供高级建模(可路由、可修订、作者身份等)支持。
property charcoal/property 模型元数据层。
queue charcoal/queue 提供构建队列支持。
translator charcoal/translator 提供基于 Symfony 的国际化支持。
ui charcoal/ui 提供布局工具(仪表板、布局、表单、菜单等)。
user charcoal/user 用户建模、身份验证和授权层。
view charcoal/view 支持 MustacheTwig 等视图层。

安装

首选(也是唯一支持的)方法是使用 Composer

composer require charcoal/charcoal

从工作骨架开始

composer create-project charcoal/boilerplate

独立包

Charcoal 框架被分割成独立的包,可以独立使用。例如,一个项目可能不需要管理面板、队列系统或发送电子邮件。

composer require charcoal/app charcoal/api custom/admin 

将项目迁移到 charcoal/charcoal

以下内容将帮助将项目从 locomotivemtl/charcoal-* 转换为 charcoal/*

ℹ️ 之前所有核心包都独立维护自己的版本号。

单仓库框架使用共享版本号,以确保所有核心包之间的一致性和预期的互操作性。

ℹ️ contrib 包继续维护其现有的独立版本号。

选项A — 如果您想用全栈框架包替换所有包
  1. 在您的 composer.json 文件中移除对核心包(locomotivemtl/charcoal-*)的要求。

  2. 在您的 composer.json 文件中,将贡献包的要求(locomotivemtl/charcoal-contrib-*)替换为来自 charcoal/contrib-* 的等效包。

  3. 运行 composer require charcoal/charcoal 来安装框架。

  4. 运行 composer update 以确保所有要求都是最新的。

  5. 运行以下迁移脚本

    ./vendor/charcoal/charcoal/build/script/migrate-project

    migrate-project 脚本将更新项目中配置文件中的所有元数据路径。之后,它将编辑或创建一个包含键 PACKAGES_PATH.env 环境变量文件,将其设置为:vendor/charcoal/charcoal/packages

    这允许 %packages.path% 字符串模板扩展到 charcoal/charcoal 内的包位置,否则它将导致在 vendor 目录中。

选项B — 如果您想用新的独立包替换所有包
  1. 在您的 composer.json 文件中替换对核心包(locomotivemtl/charcoal-*)的要求。
  2. 在您的 composer.json 文件中,将贡献包的要求(locomotivemtl/charcoal-contrib-*)替换为来自 charcoal/contrib-* 的等效包。
  3. 运行 composer require charcoal/config charcoal/core… 来安装包。
  4. 运行 composer update 以确保所有要求都是最新的。
  5. 将配置文件中的 vendor/locomotivemtl/charcoal-* 替换为 vendor/charcoal/*

依赖项

⚠️ 必需的

  • PHP 7.4 或 8.0

⚙️ 配置

[待办事项]

使用方法

[待办事项]

开发

开发在从 main 分支分离的分支上进行。

⚠️ main 分支是受保护的,不允许直接推送更改。

要安装开发环境

composer install

要运行脚本(phplint、phpcs 和 phpunit)

composer test

提交信息格式

Charcoal 使用 semantic-release 来处理发布过程。

它使用提交信息来确定代码库中更改的消费影响。遵循提交信息的正式化约定,semantic-release 自动确定下一个 语义版本 号码,生成变更日志并发布版本。

当前设置使用 Conventional Commits 用于提交信息。您可以参考它获取更多信息。

此存储库对 Commitizen 友好,并配置为使用 Conventional Commits 标准,因此您可以全局安装它以简化编写提交的过程。

或者,有一些代码编辑器插件可以帮助创建常规提交

以下是一些基于提交信息的发布类型示例

  • 修补(修复)版本发布

    fix(pencil): stop graphite breaking when too much pressure applied
  • 次要(功能)版本发布

    feat(pencil): add 'graphiteWidth' option
  • 主要(破坏性)版本发布

    perf(pencil): remove graphiteWidth option
    
    BREAKING CHANGE: The graphiteWidth option has been removed.
    The default graphite width of 10mm is always used for performance reasons.

    ✍🏻 注意,BREAKING CHANGE: 标记必须位于提交的底部。

开发指南

开发应该是基于分支的,提交信息应遵循 Conventional Commits。

步骤 说明
1. 从 main 分支创建分支或检出 develop 确保 develop 分支与 main 分支保持最新。如果您需要进行的工作时间较长,则应优先创建新分支。在个人分支上,优先使用 rebase 方法与 main 分支保持同步
2. 做你的事 编写一些代码
3. 使用Conventional Commits标准提交你的更改 你可以使用Commitizen或代码编辑器插件来帮助这个过程。更多信息请参见提交消息格式部分。
4. 推送到远程分支并运行./create-pr脚本。 使用./create-pr脚本来创建PR不是强制的。你总是可以手动创建,但脚本会更快,生成变更日志消息,并从@charcoalphp/reviewers分配审查者。
5. 等待审查和合并 喝☕️吃🍕
6. 合并完成后,github workflows将处理发布过程、打标签、更新依赖关系和更新变更日志。 做得好!🤘

维护和自动化

Symplify的MonorepoBuilder用于处理核心仓库与其包之间的一致性。它将同步composer.json文件和包版本。

[待办事项] 在.releaserc中配置语义发布

[待办事项] Conventional Commits

[待办事项] Commitizen

开发依赖

开发历史

此单例仓库是用此指南和工具以多对单的方法创建的

Github Actions

操作 触发器 描述
发布 在支持的分支上推送 使用semantic-release触发Github发布
分割单例仓库 main上发布 分割操作将包分割成单独的仓库。仅在推送标签时触发。基于symplify/monorepo-split-github-action
更新变更日志 main上发布 使用changelog-updater-action更新main分支的变更日志

脚本

create-pr

此脚本简化了创建Pull Request的过程。当你的分支准备好被拉入main或另一个[目标]分支时,这个工具会为你生成它,请求@charcoalphp/reviewers进行审查,并添加一个从两个分支之间的差异生成的美观且易于阅读的发布说明。

文档

Description
  Create a pull request on the github repository on the requested branch.
  Default branch: main

Usage
  ./create-pr

Options
  -b, --base          The base branch to merge into for the pull request. [Default: main]
  -h, --head          The branch to compare against the base branch. [Default: The current branch]

示例

# target: the target branch for the pull request. Defaults to [main]
./create-pr -b main -h user:feat-branch

create-release-notes (可选工具)

此脚本根据请求生成发布说明,返回基于请求的提交范围分支的变更日志。

文档

./build/script/create-release-notes --help

示例

./build/script/create-release-notes -g --from main

输出

更改

特性

  • create-pr: 添加一个脚本以在远程触发拉取请求(《3016115)

错误修复

  • create-pr: 从脚本中移除个人访问令牌,并用$GITHUB_TOKEN代替(《f2aaac6)
  • 包: 添加缺失的 semantic-release 插件 (59bd1b1)

贡献

与 Charcoal 互动的每个人都被期望遵循 行为准则

请参阅我们的 贡献指南 了解如何为 Charcoal 做出贡献。

如果您正在尝试报告 Charcoal 中可能的安全漏洞,请参阅我们的 安全策略 获取更多信息。

✍🏻 作者

🎉 贡献者

List of contributors

Made with contrib.rocks.

变更日志

查看 CHANGELOG

变更日志符合 Keep a Changelog 规范,并从自动发布中自动生成。

许可

Charcoal 采用 MIT 许可证。有关详细信息,请参阅 LICENSE