tekrow / laravel-vue-generator
laravel 9.2、Vue.js 3.x 和 Tailwindcss 3.x 驱动的模块化后端代码生成器。
Requires
- php: ^8.0|^8.1
- doctrine/dbal: ^3.3
- illuminate/support: ^9.2
- inertiajs/inertia-laravel: ^0.6.4
- laravel/breeze: ^v1.8
- laravel/framework: ^v9.5.1
- laravel/sanctum: ^2.14
- laravel/scout: ^9.4
- laravel/tinker: ^v2.7
- maatwebsite/excel: ^3.1
- psr/simple-cache: ^2.0
- spatie/laravel-permission: ^5.5
- tekrow/laravel-prime-datatables: dev-main
- tightenco/ziggy: ^1.0
Requires (Dev)
- barryvdh/laravel-ide-helper: ^2.12
- mockery/mockery: ~1.0
- orchestra/testbench: ^v7.0.0
- phpstan/phpstan: ^1.4.6
- phpunit/phpunit: ^9
- spatie/phpunit-snapshot-assertions: ^4.2.10
This package is not auto-updated.
Last update: 2024-09-19 19:40:06 UTC
README
Laravel 9 的后端模块化代码和 CRUD 生成器。生成的代码在以下堆栈中
- Laravel ^9
- Inertia.js
- Laravel Breeze & Sanctum
- Vue.js ^3
- Tailwindcss ^3
- PrimeVue ^3.11
安装前
在开始安装之前,您必须通过安装以下内容来准备您的 Laravel 应用程序
- 安装和配置 Laravel Sanctum 遵循以下步骤
- 安装和配置 Laravel Breeze 作为认证包 遵循以下步骤
- 安装和配置
spatie/laravel-permission
。 遵循以下步骤 - 安装和配置
laravel/scout
。默认情况下,lvg 将在安装过程中尝试配置 scout 的基本database
驱动程序。 遵循 Scout 安装步骤
现在您已经准备好安装 Lvg!lvg 将作为一个独立的模块化组件安装,具有自己的前端资源和甚至使用 vite.js 的编译过程,所有这些都独立于您的主应用程序,甚至允许您混合两个前端堆栈!
安装
要通过 Composer 安装,请运行以下命令
composer require tekrow/laravel-vue-generator -W
默认情况下,Lvg 的类不会自动加载。在继续安装之前,请使用 psr-4
在您的应用程序的 composer.json 中添加以下内容来自动加载 Lvg 命名空间和后端模块
{ "autoload": { "psr-4": { "App\\": "app/", "Database\\Factories\\": "database/factories/", "Database\\Seeders\\": "database/seeders/", "Lvg\\": "lvg/" } } }
提示:别忘了之后运行 composer dump-autoload
。
该软件包将自动注册其服务提供者。然后运行以下命令安装代码生成和后端所需文件
php artisan lvg:install
提示:如果您想强制替换现有的 Lvg 文件,请在上面的命令中添加 --force 选项 从这里开始,您可以生成代码并与新的后端进行交互。
运行所有模块的种子器。此步骤是为了拥有默认的管理员角色和用户。不进行此步骤,您将无法立即登录。
php artisan lvg:seed
要运行编译器
cd lvg
要监视资源
npm run dev
要构建生产资源
npm run build
**提示:构建资源的目的是在 public/vendor/lvg 中,并在每次构建之前先清除文件夹**
默认情况下,用户生成没有分配角色,需要分配超级管理员权限
php artisan lvg:assign-role "admin@tekrow.com" "administrator"
在 localhost:8000/admin(或您的域名)上打开管理员
现在您可以使用以下详细信息登录
用户名:admin@tekrow.com
密码:password
在安装步骤中,lvg 配置文件发布到 config/lvg.php。它包含以下配置(以及其他配置)
- lvg.route_prefix - 允许您定义后端可以访问的 uri。默认为 admin。您可以通过设置环境变量 LVG_ROUTE_PREFIX 来更改它
- lvg.sidebar.heading - 允许您定义显示在后台侧边栏上方的侧边栏标题。您可以通过设置环境变量 LVG_SIDEBAR_HEADING 来更改它
- lvg.dev_modules - 它列出了在生产环境中不可用的模块。
您可以在域 /admin 上访问它
模块结构
本包生成的代码的模块化结构深受nwidart/laravel-modules的启发。事实上,生成的模块几乎相同,只是在文件夹结构上略有差异。文件夹
ModuleName/
模块的父文件夹。每个CRUD生成的模块都将作为一个独立的模块创建。
模块名称采用表名的复数Pascal大小写形式。例如,如果表名为user_types
,则模块名称(即文件夹名称)将是UserTypes
Config/
包含模块的配置文件
Console/
包含模块的命令行工具
Database/
包含模块的迁移、工厂和播种器
Http/
包含模块的控制器、中间件和请求。
验证和授权在请求类内完成。目前生成的请求类包括IndexRequest
、ViewRequest
、StoreRequest
、UpdateRequest
、DestroyRequest
和用于数据表的DtRequest
。
生成了两个控制器:web
控制器和api
控制器
Js/
包含模块的javascript资源。这些主要是Vue.js 3
组件和页面。
后端使用Inertia.js
来处理来自Vue.js页面的请求。如果您需要自定义UI,这是代码生成后您主要停留的地方。
大多数常见的布局和组件文件位于Js
文件夹中的Core
模块内,该模块别名为@/
用于其他组件
Models/
包含模块的模型。每个模块将生成一个主模型。您可以在同一模块中添加更多模型。
Policies/
包含模块的授权逻辑。仅生成一个主授权策略。策略已配置为检查来自laravel-permission
的可用权限。
Providers/
包含模块的主服务提供者和任何其他模块服务提供者
Repositories/
包含模块的存储库。最初只生成一个存储库,但您可以创建更多。存储库类包含所有CRUD逻辑。控制器的工作仅仅是接收验证和授权的用户输入,将输入传递给存储库,并在操作完成后向用户返回响应。
resources/
用于加载模块的blade视图和其他模块资源,以防您想扩展模块。目前尚未使用,但它保留自nwidart/laravel-module
的设计。
Routes/
包含模块的路由。有两个单独的路由文件:api.php
和web.php
您可以在路由部分中了解更多信息。
tests/
包含模块的单元测试和功能测试。目前尚未生成测试。
composer.json
这是模块的composer定义
module.json
这是模块的定义文件。
package.json
模块的package.json
,以防您想使用其他依赖项扩展模块。这些是通过运行模块的webpack.mix
编译的。
webpack.mix.js
模块的webpack.mix
文件,用于编译resources
文件夹中的assets
。这在生成的代码中未使用,但感觉仍然需要保留nwidart/laravel-modules
的结构。
package.json
在lvg/
内部,这是主要的npm依赖定义文件。这些依赖中的大部分都在Core
模块中使用,因此与其他模块共享。
package-lock.json
主package.json
文件的锁文件
tailwind.config.ts
主要的tailwindcss
配置文件。如果您想更改主题颜色或其他tailwindcss设置,请在此处操作。
tsconfig.json
所有Vue页面都使用typescript
编写。这是开发的主要typescript配置文件。
vitae.config.ts
后端资产使用 vite.js
编译。这是主要的 vite 配置
文件。
基本用法
Lvg 会根据现有的数据库生成代码。如果数据库尚未存在,第一步是编写和运行迁移。为了更好地说明,我们将生成构建车辆网络应用程序所需的一个 CRUD。让我们创建一个 vehicle_types 表
php artisan make:migration create_vehicle_types_table
将以下内容填充到迁移中
Schema::create('vehicle_types', function (Blueprint $table) { $table->increments('id'); $table->string('slug')->unique(); $table->string('name')->unique(); $table->text('description')->nullable(); $table->boolean('active')->default(true); $table->timestamps(); });
运行迁移
php artisan migrate
准备图示
- 为模块生成图示。图示定义了模块的字段和关系。稍后,生成命令将使用这些信息来生成代码。您可以从接口创建代码,或者简单地运行以下命令
php artisan lvg:blueprint vehicle_types
- 现在生成代码
php artisan lvg:make vehicle_types
该命令将生成 VehicleTypes 模块,其文件将位于 lvg/VehicleTypes/ 目录下
**提示:如果模块已经存在,并且您想强制替换它,可以在 lvg:make 命令中指定 -F 或 --force。
如果 vehicle_types 图示不存在,运行 lvg:make 将首先生成它然后再继续。
现在编译和监控资产
cd lvg
npm run dev
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。