tidakdijual/blueprint

一个表达性、易于阅读的代码生成工具。基于laravel shift blueprint。

dev-tidakdijual 2022-11-02 16:00 UTC

This package is auto-updated.

Last update: 2024-09-30 01:46:57 UTC


README

Build Status Latest Stable Version License

Blueprint

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

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

要求

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

安装

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

composer require --dev laravel-shift/blueprint

Blueprint 将自动使用 package discovery 注册自身。

额外配置:如果您正在运行 Laravel 8,或注册基于类的路由或使用 app/Models 文件夹,则需要配置 Blueprint。请参阅 Blueprint 文档 以获取更多信息。

基本用法

Blueprint 附带一系列 artisan 命令。您最常用的命令是 blueprint:build 命令,用于生成 Laravel 组件

php artisan blueprint:build [draft]

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: post.index

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

  • 一个用于 Post 的模型类,包含 fillablecastsdates 属性,以及关系方法。
  • 创建 posts 表的迁移。
  • 一个智能设置列的 工厂,使用假数据填充列。
  • 一个用于 PostController 的控制器类,包含 indexstore 操作,以及为每个 语句 生成的代码。
  • Routes 用于 PostController 操作。
  • 一个基于 Post 模型定义的 表单请求,名为 StorePostRequest,验证 titlecontent
  • 一个用于 ReviewPostmailable 类,包含通过构造函数设置的 post 属性。
  • 一个用于 SyncMediajob 类,包含通过构造函数设置的 post 属性。
  • 一个用于 NewPostevent 类,包含通过构造函数设置的 post 属性。
  • PostController@index 渲染的 post/index.blade.php Blade 模板

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

文档

浏览 Blueprint 文档 以获取有关 定义模型定义控制器高级配置扩展 Blueprint 的完整详细信息。

支持策略

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

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