PHPackages                             dev-lnk/moonshine-builder - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. dev-lnk/moonshine-builder

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

dev-lnk/moonshine-builder
=========================

Project builder for MoonShine

3.2.0(4mo ago)254.8k↑15%3MITPHPPHP ^8.2CI passing

Since Apr 9Pushed 4mo ago3 watchersCompare

[ Source](https://github.com/dev-lnk/moonshine-builder)[ Packagist](https://packagist.org/packages/dev-lnk/moonshine-builder)[ RSS](/packages/dev-lnk-moonshine-builder/feed)WikiDiscussions 3.x Synced 1mo ago

READMEChangelog (10)Dependencies (5)Versions (35)Used By (0)

[![logo](https://github.com/moonshine-software/moonshine/raw/2.x/art/lego.png)](https://github.com/moonshine-software/moonshine/raw/2.x/art/lego.png)

Создание проектов с использованием схем для [MoonShine](https://github.com/moonshine-software/moonshine).
---------------------------------------------------------------------------------------------------------

[](#создание-проектов-с-использованием-схем-для-moonshine)

[![Latest Stable Version](https://camo.githubusercontent.com/da2e5cb9db3d473be94e872d10bca1f6b6ed7ac694ed90ca7ed4de0faf471396/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6465762d6c6e6b2f6d6f6f6e7368696e652d6275696c646572)](https://packagist.org/packages/dev-lnk/moonshine-builder)[![Total Downloads](https://camo.githubusercontent.com/ae828ea730b03bb9211b06615a45450d3f00323bd208fb3170c43f9bf98c283f/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6465762d6c6e6b2f6d6f6f6e7368696e652d6275696c646572)](https://packagist.org/packages/dev-lnk/moonshine-builder)[![tests](https://raw.githubusercontent.com/dev-lnk/moonshine-builder/0c267c4601af644378e1d50acc4aa4ce6bac79d6/.github/tests/badge.svg)](https://github.com/dev-lnk/moonshine-builder/actions)[![License](https://camo.githubusercontent.com/66beca7e878a6ec563a17f5bb98c73716ba91eccae87288ff8cb1db22795dd9e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6465762d6c6e6b2f6d6f6f6e7368696e652d6275696c646572)](https://packagist.org/packages/dev-lnk/moonshine-builder)
[![Laravel required](https://camo.githubusercontent.com/67ff25342790de50f83c6313acb28d5fdd1d7931a63bf481f21ea769b7b1ca1c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d31302b2d4646324432303f7374796c653d666f722d7468652d6261646765266c6f676f3d6c61726176656c)](https://laravel.com)[![PHP required](https://camo.githubusercontent.com/233addbd8bc6c491cd7a929fd0305ab4d0144a078f8f346dfeb9421d929ac128/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322b2d3737374242343f7374796c653d666f722d7468652d6261646765266c6f676f3d706870)](https://www.php.net/manual/)[![MoonShine required](https://camo.githubusercontent.com/b07f2cb8950f48c71b7a25ffc1fb68d4760877c02d315cdbb80610547c199cf2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6f6f6e7368696e652d342e302b2d3142323533423f7374796c653d666f722d7468652d6261646765)](https://github.com/moonshine-software/moonshine)

- [Описание](#about)
- [Установка](#install)
- [Конфигурация](#config)
- [Быстрый старт](#start)
- [Методы генерации кода](#code-generate)
    - [Создание из SQL-таблицы](#sql)
    - [Создание из JSON-схемы](#json)
        - [Timestamps](#timestamps)
        - [Soft delete](#soft-delete)
        - [Флаги для генерации файлов](#flags)
    - [Генерация из консоли](#console)
    - [Генерация из существующей модели](#model)
- [Массовый импорт таблиц](#mass-sql)
- [Использование в других проектах](#cases)

---

Описание
--------

[](#описание)

Этот пакет позволяет создавать Resource, Model и Migration со всеми полями, используя методы генерации из:

- [SQL-таблицы](#sql),
- [JSON-схемы](#json),
- [Генерация кода для нового ресурса из консоли](#console),
- [Существующей модели Laravel](#model).

Пакет генерирует следующие файлы:

- [Resource](https://github.com/dev-lnk/moonshine-builder/blob/3.x/.github/entities/resource.md)
- [IndexPage](https://github.com/dev-lnk/moonshine-builder/blob/3.x/.github/entities/index-page.md)
- [FormPage](https://github.com/dev-lnk/moonshine-builder/blob/3.x/.github/entities/form-page.md)
- [DetailPage](https://github.com/dev-lnk/moonshine-builder/blob/3.x/.github/entities/detail-page.md)
- [Model](https://github.com/dev-lnk/moonshine-builder/blob/3.x/.github/entities/model.md)
- [Migration](https://github.com/dev-lnk/moonshine-builder/blob/3.x/.github/entities/migration.md)

Установка
---------

[](#установка)

```
composer require dev-lnk/moonshine-builder --dev
```

Конфигурация
------------

[](#конфигурация)

Опубликуйте файл конфигурации пакета:

```
php artisan vendor:publish --tag=moonshine-builder
```

В файле конфигурации укажите путь к вашим JSON-схемам:

```
return [
    // Directory where schematic files in json, yaml, etc. are stored.
    'builds_dir' => base_path('builds'),

    // Base path for models directory.
    'base_model_path' => 'app/Models',

    // Notification of duplicate files of models and resources with a new generation.
    'is_confirm_replace_files' => true,

    // Ask about adding a new resource to the provider.
    'is_confirm_change_provider' => false,

    // Ask about adding a new resource to the menu.
    'is_confirm_change_menu' => false,
];
```

Быстрый старт
-------------

[](#быстрый-старт)

Выполните команду:

```
php artisan moonshine:build

```

Вам будут предложены варианты выбора методов генерации кода, например:

```
 ┌ Type ────────────────────────────────────────────────────────┐
 │   ○ table                                                    │
 │ › ● json                                                     │
 │   ○ console                                                  │
 │   ○ model                                                    │
 └──────────────────────────────────────────────────────────────┘
```

При выборе варианта `json`:

```
 ┌ File ────────────────────────────────────────────────────────┐
 │ › ● category.json                                            │
 │   ○ project.json                                             │
 └──────────────────────────────────────────────────────────────┘
```

```
app/Models/Category.php was created successfully!
app/MoonShine/Resources/CategoryResource.php was created successfully!
database/migrations/2024_05_27_140239_create_categories.php was created successfully!

INFO  All done.

```

Команда имеет следующую сигнатуру `moonshine:build {target?} {--type=}`, где:

- `target` - сущность, по которой будет выполнена генерация,
- `type` - тип или метод генерации, доступно `table`, `json`, `console`, `model`.

Также доступны отдельные команды для каждого типа генерации:

- `php artisan moonshine:build-json {target?}` - генерация из JSON-схемы
- `php artisan moonshine:build-table {target?}` - генерация из SQL-таблицы
- `php artisan moonshine:build-resource {entity?} {fields?*}` - генерация из консоли
- `php artisan moonshine:build-model {entity?} {--all}` - генерация из существующей модели

Методы генерации кода
---------------------

[](#методы-генерации-кода)

### Создание из SQL-таблицы

[](#создание-из-sql-таблицы)

Вы можете создать ресурс, используя схему таблицы. Для этого выполните команду `php artisan moonshine:build` и выберите вариант `table`:

```
 ┌ Type ────────────────────────────────────────────────────────┐
 │ › ● table                                                    │
 │   ○ json                                                     │
 │   ○ console                                                  │
 └──────────────────────────────────────────────────────────────┘
```

Выберите необходимую таблицу:

```
 ┌ Table ───────────────────────────────────────────────────────┐
 │   ○ password_reset_tokens                                  │ │
 │   ○ sessions                                               │ │
 │   ○ statuses                                               │ │
 │   ○ tasks                                                  │ │
 │ › ● users                                                  ┃ │
 └──────────────────────────────────────────────────────────────┘
```

Вы можете сразу указать название таблицы и тип генерации. Пример:

```
php artisan moonshine:build users --type=table
```

Или использовать специализированную команду:

```
php artisan moonshine:build-table users
```

Результат:

```
/**
 * @return list
 */
protected function fields(): iterable
{
    return [
        ID::make('id'),
        Text::make('name', 'name'),
        Text::make('email', 'email'),
        Date::make('email_verified_at', 'email_verified_at'),
        Text::make('password', 'password'),
        Text::make('remember_token', 'remember_token'),
    ];
}
```

### Создание из JSON-схемы

[](#создание-из-json-схемы)

Структура [JSON](https://github.com/dev-lnk/moonshine-builder/blob/master/json_schema.json). В директории `builds_dir` создайте файл схемы, например, `category.json`:

```
{
  "resources": [
    {
      "name": "Category",
      "fields": [
        {
          "column": "id",
          "type": "id",
          "methods": [
            "sortable"
          ]
        },
        {
          "column": "name",
          "type": "string",
          "name": "Name"
        }
      ]
    }
  ]
}
```

Чтобы сгенерировать файлы проекта, выполните команду:

```
php artisan moonshine:build category.json
```

Или используйте специализированную команду:

```
php artisan moonshine:build-json category.json
```

Более подробный пример с множественными ресурсами и связями можно найти [здесь](https://github.com/dev-lnk/moonshine-builder/blob/master/examples/project.json).

#### Timestamps

[](#timestamps)

Вы можете указать флаг `timestamps: true`:

```
{
  "resources": [
    {
      "name": "Category",
      "timestamps": true,
      "fields": []
    }
  ]
}
```

Поля `created_at` и `updated_at` будут добавлены в сгенерированный код. Если вы укажете поля `created_at` и `updated_at` вручную, флаг `timestamps` автоматически установится в `true`.

#### Soft delete

[](#soft-delete)

Работает аналогично флагу `timestamps` и полю `deleted_at`.

#### Флаги для генерации файлов

[](#флаги-для-генерации-файлов)

С помощью флагов `withResource`, `withModel`, `withMigration` вы можете настроить, что именно требуется сгенерировать для вашего ресурса:

```
{
  "name": "ItemPropertyPivot",
  "withResource": false,
  "withModel": false
}
```

### Генерация из консоли

[](#генерация-из-консоли)

Выполните команду `php artisan moonshine:build` и выберите вариант `console`, либо выполните команду `moonshine:build-resource`. Далее вам необходимо задать имя ресурса и описать все поля:

```
 ┌ Type ────────────────────────────────────────────────────────┐
 │ console                                                      │
 └──────────────────────────────────────────────────────────────┘

 ┌ Resource name: ──────────────────────────────────────────────┐
 │ Status                                                       │
 └──────────────────────────────────────────────────────────────┘

 ┌ Column: ─────────────────────────────────────────────────────┐
 │ id                                                           │
 └──────────────────────────────────────────────────────────────┘

 ┌ Column name: ────────────────────────────────────────────────┐
 │ Id                                                           │
 └──────────────────────────────────────────────────────────────┘

 ┌ Column type: ────────────────────────────────────────────────┐
 │ id                                                           │
 └──────────────────────────────────────────────────────────────┘

 ┌ Add more fields? ────────────────────────────────────────────┐
 │ ● Yes / ○ No                                                 │
 └──────────────────────────────────────────────────────────────┘
```

Вы можете сразу создать ресурс с полями, выполнив следующую команду:

```
php artisan moonshine:build-resource Status id:Id:id name:Name:string
```

Результат:

```
/**
 * @return list
 */
protected function fields(): iterable
{
    return [
        ID::make('id'),
        Text::make('Name', 'name'),
    ];
}
```

Сигнатура команды `moonshine:build-resource {entity?} {fields?*}`, где:

- entity - название ресурса,
- fields - поля для генерации вида name:Name:string или {column}:{columnName}:{type}

Все доступные {type} можно посмотреть, выполнив команду `php artisan moonshine:build-types`

### Генерация из существующей модели

[](#генерация-из-существующей-модели)

Если у вас уже есть готовая модель Laravel с определёнными полями, связями и настройками, вы можете сгенерировать MoonShine Resource на основе этой модели. Выполните команду `php artisan moonshine:build` и выберите вариант `model`:

```
 ┌ Type ────────────────────────────────────────────────────────┐
 │   ○ table                                                    │
 │   ○ json                                                     │
 │   ○ console                                                  │
 │ › ● model                                                    │
 └──────────────────────────────────────────────────────────────┘
```

Затем выберите нужную модель из списка доступных:

```
 ┌ Select models (use Space to select, Enter to confirm): ──────┐
 │   ◻ app/Models/Category.php                                │ │
 │   ◻ app/Models/Comment.php                                 │ │
 │   ◻ app/Models/Product.php                                 │ │
 │   ◻ app/Models/Rating.php                                  │ │
 │   ◻ app/Models/Review.php                                  │ │
 │   ◻ app/Models/Tag.php                                     │ │
 └────────────────────────────────────────────────── 0 selected ┘
```

Вы также можете сразу указать модель для генерации:

```
php artisan moonshine:build-model Product
```

или с полным именем класса:

```
php artisan moonshine:build-model "App\Models\Product"
```

**Генерация ресурсов для всех моделей**

Если вам нужно создать ресурсы для всех моделей в директории, используйте флаг `--all`:

```
php artisan moonshine:build-model --all
```

Эта команда автоматически просканирует директорию с моделями и создаст ресурсы для каждой найденной модели.

Пакет автоматически проанализирует модель и создаст:

- Resource с полями на основе структуры таблицы
- Связи (HasMany, BelongsTo, BelongsToMany, HasOne) на основе методов модели
- Правильные типы полей на основе типов колонок в базе данных
- Настройки timestamps и soft deletes, если они используются в модели

**Настройка директории моделей**

По умолчанию пакет ищет модели в директории `app/Models`. Вы можете изменить это в файле конфигурации:

```
'base_model_path' => 'app/Models',
```

### Массовый импорт таблиц

[](#массовый-импорт-таблиц)

Если у вас уже есть проект с собственной базой данных и вы не хотите генерировать ресурсы по одному, используйте следующую команду:

```
php artisan moonshine:project-schema
```

Сначала выберите все ваши pivot-таблицы для корректного формирования связи BelongsToMany, затем выберите все необходимые таблицы, для которых нужно сгенерировать ресурсы:

```
 ┌ Select the pivot table to correctly generate BelongsToMany (Press enter to skip) ┐
 │ item_property                                                                    │
 └──────────────────────────────────────────────────────────────────────────────────┘

 ┌ Select tables ───────────────────────────────────────────────┐
 │ categories                                                   │
 │ comments                                                     │
 │ items                                                        │
 │ products                                                     │
 │ properties                                                   │
 │ users                                                        │
 └──────────────────────────────────────────────────────────────┘
```

Будет создана JSON-схема, которую при желании можно отредактировать и использовать:

```
project_20240613113014.json was created successfully! To generate resources, run:
php artisan moonshine:build project_20240613113014.json

```

### Использование в других проектах

[](#использование-в-других-проектах)

- [MoonVibe](https://github.com/moonshine-software/moon-vibe) - генерации админ-панели с помощью ИИ

###  Health Score

51

—

FairBetter than 96% of packages

Maintenance76

Regular maintenance activity

Popularity33

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity65

Established project with proven stability

 Bus Factor1

Top contributor holds 97.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~20 days

Recently: every ~11 days

Total

33

Last Release

131d ago

Major Versions

0.8.0 → 1.0.02024-06-03

1.x-dev → 2.0.0-alpha2024-10-22

2.x-dev → 3.0.02025-11-20

PHP version history (3 changes)0.1.0PHP ^8.1

0.4.0PHP ^8.2

2.0.0PHP ^8.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/05a527a4668ba463f5dd369f8d80a08dc609286bafe3d335fef4def6a32d5e63?d=identicon)[dev-lnk](/maintainers/dev-lnk)

---

Top Contributors

[![dev-lnk](https://avatars.githubusercontent.com/u/24544581?v=4)](https://github.com/dev-lnk "dev-lnk (222 commits)")[![lee-to](https://avatars.githubusercontent.com/u/1861327?v=4)](https://github.com/lee-to "lee-to (4 commits)")[![forest-lynx](https://avatars.githubusercontent.com/u/16956348?v=4)](https://github.com/forest-lynx "forest-lynx (1 commits)")

---

Tags

buildermoonshine

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/dev-lnk-moonshine-builder/health.svg)

```
[![Health](https://phpackages.com/badges/dev-lnk-moonshine-builder/health.svg)](https://phpackages.com/packages/dev-lnk-moonshine-builder)
```

###  Alternatives

[kris/laravel-form-builder

Laravel form builder - symfony like

1.7k2.2M45](/packages/kris-laravel-form-builder)[gherkins/regexpbuilderphp

PHP port of thebinarysearchtree/regexpbuilderjs

1.4k163.0k1](/packages/gherkins-regexpbuilderphp)[optimistdigital/nova-menu-builder

This Laravel Nova package allows you to create and manage menus and menu items.

243369.4k](/packages/optimistdigital-nova-menu-builder)[outl1ne/nova-menu-builder

This Laravel Nova package allows you to create and manage menus and menu items.

243246.0k3](/packages/outl1ne-nova-menu-builder)[lara-zeus/bolt

Zeus Bolt is form builder for your users, with so many use cases

23640.2k2](/packages/lara-zeus-bolt)[rainlab/builder-plugin

Builder plugin for October CMS

17147.2k1](/packages/rainlab-builder-plugin)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
