laravel-shift/blueprint

一个表达性强、易于阅读的代码生成工具。


README

Build Status Latest Stable Version License

Blueprint

Blueprint是一个开源工具,可以从一个单一的、易于阅读的定义中快速生成多个Laravel组件。

观看Blueprint的快速演示,或继续阅读以开始使用。

要求

Blueprint需要运行最新稳定版本的Laravel应用程序,目前是Laravel 10.x。

安装

您可以使用以下命令通过Composer安装Blueprint:

composer require -W --dev laravel-shift/blueprint

Blueprint将自动使用包发现注册自身。

如果您想运行Blueprint生成的测试,还应安装Additional Assertions

composer require --dev jasonmccreary/laravel-test-assertions

基本用法

Blueprint附带一套Artisan命令。您将使用blueprint:build命令来生成Laravel组件。

php artisan blueprint:build [draft]

draft文件包含要生成的组件的定义。让我们查看以下示例草案文件,该文件生成一些blog组件:

models:
  Post:
    title: string:400
    content: longtext
    published_at: nullable timestamp
    author_id: id:user

controllers:
  Post:
    index:
      query: all
      render: post.index with:posts

    store:
      validate: title, content, author_id
      save: post
      send: ReviewPost to:post.author.email with:post
      dispatch: SyncMedia with:post
      fire: NewPost with:post
      flash: post.title
      redirect: posts.index

从这20行YAML中,Blueprint将生成以下所有Laravel组件:

  • Post生成的完整模型类,包括fillablecastsdates属性,以及关系方法。
  • 创建posts表的迁移
  • 一个智能设置列的factory,使用假数据。
  • PostController生成的控制器类,包含indexstore动作,并为每个语句生成代码。
  • PostController动作的路由
  • 基于Post模型定义的表单请求StorePostRequest进行验证。
  • ReviewPost生成的mailable类,通过构造函数设置post属性。
  • SyncMedia生成的job类,通过构造函数设置post属性。
  • NewPost生成的event类,通过构造函数设置post属性。
  • PostController@index渲染的Blade模板post/index.blade.php
  • 针对PostControllerHTTP测试
  • 针对StorePostRequest表单请求的单元测试。

注意:此示例假设默认Laravel应用程序中的功能,例如User模型和app.blade.php布局。否则,生成的测试可能失败。

文档

浏览Blueprint文档,了解有关定义模型定义控制器高级配置扩展Blueprint的完整细节。

支持策略

从版本 2 开始,Blueprint 只为最新的稳定版本的 Laravel 生成代码(目前是 Laravel 10)。如果您需要支持旧版本的 Laravel,可以使用版本 1 或升级您的应用程序(尝试使用 Shift)。

Blueprint 仍然遵循 语义化版本控制。然而,它是基于其语法的。对语法的任何更改都将增加其主要版本号。否则,次要版本号的增加将包含新功能。这包括为 Laravel 的未来版本生成代码。