跳转到主要内容
本文基于源代码调查整理。截至 2026 年 7 月,仓库仍在开发中。

什么是 Laravel Package Skeleton

Laravel Package Skeleton 是开发 Laravel 包时使用的启动模板。
执行 composer install 会自动启动交互式配置脚本 (configure.php),通过一问一答的方式设置包名、vendor 名、命名空间和要使用的功能。配置完成后就可以立即开始开发。

为什么需要这个骨架

如果“凭感觉”开始写 Laravel 包,搭建测试环境、静态分析、代码格式化、GitHub Actions 等大量与包逻辑本身无关的工作会占据你不少时间。 Laravel Package Skeleton 把 Laravel 团队在实际包开发中沉淀下来的最佳实践打包成了一个模板。用了这个模板,你就能跳过“环境搭建”,直接从包逻辑实现开始。

包含的工具

可选的包功能

composer install 的提示中,只选择需要的功能。未选择功能对应的脚手架会被自动删除。

可选的工具

功能之外,也可以按项目需要开关各种工具。

搭建流程

1

基于模板创建仓库

在 GitHub 上点击 Use this template 创建新仓库,或者直接克隆。
2

安装依赖

执行 composer install,configure.php 会自动启动。
想手动执行脚本时,使用 --no-scripts
3

回答提示

按一问一答设置以下项:
  • Author Name / Email
  • Vendor 名(例如 kawax)
  • Package 名(例如 my-package)
  • Package 描述
  • Class 名(例如 MyPackage)
  • 要使用的功能(多选)
  • 要使用的工具(多选)
  • 是否自动创建 GitHub 仓库(gh CLI 已登录时)
4

验证

会依次执行 PHPStan → Pint → 类型覆盖率 → Pest。
5

用 Workbench 做端到端测试

http://localhost:8000 会启动一个用于验证包的简易 Laravel 应用。

非交互模式

从 CI 或脚本中运行时,使用 --no-interaction
指定功能标志时,只会包含指定的功能。省略标志时会包含所有功能。

GitHub Actions CI

骨架里的 tests.yml 是一个矩阵构建,会对多种 PHP、Laravel 版本和操作系统组合运行测试。
每个 job 里执行的内容:
  1. PHPStan(composer analyse)——静态分析
  2. Pint(composer lint:check)——代码风格检查
  3. 类型覆盖率(composer test:types)——类型覆盖率 100% 检查(仅 Ubuntu)
  4. Pest(composer test:unit)——单元测试(仅 Ubuntu)

Changelog 自动化

update-changelog.yml 会以 GitHub Release 为触发,自动更新 CHANGELOG.mdrelease.yml 会按 PR 标签对变更进行分类生成发布说明。 发布说明中的标签:

configure.php 做的事

configure.php 是一个只运行一次的配置 bootstrap 脚本,运行完就会被删除。

安装后的 GitHub 设置

README 中列出的安装后推荐设置:
  • Dependabot PR 请手动 review —— 骨架里没有包含自动合并的工作流
  • 创建发布说明所需的标签 —— breakingenhancementbugdocumentationdependenciesmaintenanceskip-changelogduplicate
  • 设置 main 分支保护 —— Changelog 自动化会通过 GitHub Actions 向 CHANGELOG.md 提交,分支保护规则需要相应调整
不需要额外的仓库 secrets。骨架里的工作流使用 GitHub 内置的 GITHUB_TOKEN

当前开发状态

  • GitHub 仓库:laravel/package-skeleton
  • 公开时间:2026 年 7 月(积极开发中)
  • 注意:仍处于开发早期,API 和结构可能会变更
如果你现在要开始写 Laravel 包,与其自己从零搭一个骨架,不如从这个模板起步。它凝聚了 Laravel 团队多年包开发中沉淀下来的最佳实践。

laravel/package-skeleton 仓库

源代码和最新信息请查看这里。

包开发官方文档

Laravel 包开发的基础知识请参考官方文档。
最后修改于 2026年7月18日