thomasderooij/laravel-modules

Laravel 框架模块工具包。

2.0.1 2022-10-18 13:28 UTC

README

Build Status License

安装

使用以下命令通过 composer 安装此包

composer require thomasderooij/laravel-modules

文档

此包使您可以使用 Laravel 框架,为可禁用并具有对其他模块依赖的代码提供单独的模块。它提供了一个工作台来跟踪您当前正在工作的模块,并且所有命令,如 "make:controller",都应用于您工作台中的当前模块。每个模块都具有 Laravel 所有的功能,并且包含通过复合提供者包含在项目中的服务提供者。

入门

要开始,运行以下命令

php artisan module:init
php artisan migrate

命令

要管理您的模块,您可以使用以下命令

php artisan module:new <module-name>

这将在您的模块目录中创建一个新的模块,并将其设置为您的工作台。它还将询问其依赖项。如果您的模块(称为 Users)依赖于另一个模块(称为 Auth),您可以在其中指定此信息,并且它在运行数据库迁移时会考虑这一点。

php artisan module:delete <module-name>

这将删除一个模块及其包含的所有代码。只有当您确定您不需要此模块中的代码时才使用此命令。如果您不确定,请使用停用命令。

php artisan module:deactivate <module-name>

这会停用一个模块。这意味着代码将保持完整,但命令、控制器和路由不会被识别,并且从软件的角度来看,它们不存在。

php artisan module:activate <module-name>

这会重新激活一个已停用的模块。

php artisan module:set <module-name> <--module_to_apply_it_to, optional>

这会将您的其中一个模块设置为工作台。这将在您的本地缓存中设置,并将在一周后过期。
这样做唯一的优点是,当您调用 make 命令时,它将应用于您工作台中的模块。要将此应用于另一个模块,请添加 --module=your-module-here-case-insensitive,它将应用于您想要的任何模块,只要它存在即可

php artisan module:unset

这将清除您的工作台

php artisan module:check

这会告诉您,目前是否有一个模块在工作台中

php artisan module:add-dependency <module-name>

这允许您添加依赖项,以表明您的模块无法在没有上游模块的情况下运行。不允许循环引用。例如,Auth 模块不能依赖于 User,只要 User 模块依赖于 Auth。如果这种情况发生,您可能需要考虑将其合并为单个模块,而不是两个模块。此命令将只显示不是您当前模块下游的模块。

php artisan module:delete-dependency <module-name>

这是 add-dependency 命令的反向操作。它显示您的模块具有哪些依赖项,并允许您删除任何或所有这些依赖项。

目录结构

创建新模块时,您的目录结构将如下所示

.
├── app
├── bootstrap
├── config
├── database
├── modules<this is the default>
│   └── YourModule
│   │   ├── Console
│   │   │   └── Kernel.php
│   │   ├── Http
│   │   │   └── Controllers
│   │   │       ├── Controller.php
│   │   ├── Providers
│   │   │   ├── AuthServiceProvider.php
│   │   │   ├── BroadcastServiceProvider.php
│   │   │   ├── EventServiceProvider
│   │   │   └── RouteServiceProvider
│   │   └── routes
│   │       ├── api.php
│   │       ├── console.php
│   │       └── web.php
│   └── .tracker
├── public
├── resources
├── routes
├── storage
├── tests
└── vendor

.tracker 文件跟踪您拥有的模块及其依赖项。
您看不到的所有目录,如 Database、Events、Jobs、Exceptions 等,将在调用 make 命令时创建。
如果您在使用 PHPUnit 时遇到问题,请确保将您的模块测试目录添加到 phpunit.xml 文件中。

Laravel 命令

创建

所有 make 命令都应用于您工作台中的模块,并且可以使用 --module 选项进行覆盖。如果没有模块在工作台中且未使用 --module 选项,则命令将显示原始 Laravel 的行为。要显式引用原始 Laravel 目录,可以使用 --module=vanilla 选项。

对于任何模型,当使用make:model命令创建模型时,HasFactory特质指的是这个库的特质。如果你的模型找不到工厂,请检查模型是否引用了正确的特质。

迁移

migrate命令会查看你的模块依赖项,并据此进行迁移。因此,请确保你的下游迁移不会引用你的上游迁移,因为这会带来麻烦。
migrate和migrate:fresh命令都包含一个--modules选项,以防你不想使用你的依赖项,并将按照提供的顺序迁移模块。模块应以逗号分隔,如下所示

php artisan migrate <-- Will migrate based on your dependencies
php artisan migrate --modules=<module-1>,<module-2>....
php artisan migrate:fresh <-- Will migrate based on your dependencies
php artisan migrate:fresh --modules=<module-1>,<module-2>....

在一个命令中迁移多个模块将针对每个模块创建一个单独的迁移批次。

错误和意外行为

这个项目似乎功能相当齐全,但可能会有错误。如果你发现任何错误或遇到意外行为,请随时创建一个issue。

设置

在设置中,你可以找到一些内容

  • [root] <-- 这是模块目录的默认设置
  • [vanilla] <-- 你的应用目录被视为一个模块,其名称可以在其中找到。默认为"Vanilla"
  • [models_dir] <-- 你的模型将被放置的目录。默认为"Models"
  • [autoload] <-- composer.json使用的psr4自动加载的目录
  • [base_model] <-- 模型:make命令的基础模型类
  • [has_factory_trait] <-- hasFactory特质的类。默认情况下,它被覆盖以使用模块目录
  • [cache_validity] <-- 模块在你的工作台中的保留时间。默认为一周。

Vanilla Laravel的名称只是默认行为的模块名称。如果你想更改该名称,可以在config/modules文件中更改它,或者将'MODULES_VANILLA={你的首选名称}'添加到你的.env文件中

路线图

以下内容是计划中的,大致如下

  • 将视图资源添加到模块
  • 广播服务提供商的组合功能
  • migrate:refresh命令
  • 绘制漂亮的ASCII图片来可视化你的依赖关系

按照这个顺序。可能吧。

许可证

这个Laravel插件是开源软件,根据MIT许可证许可。