rocketslab / neewton
The InertiaJs Module Manager.
Installs: 9
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Type:project
Requires
- php: ^8.0
- illuminate/console: ^8.0
- illuminate/support: ^8.0
- inertiajs/inertia-laravel: ^0.4.3
Requires (Dev)
- mockery/mockery: ^1.4.4
- phpunit/phpunit: ^9.5.10
README
Neewton é um gerenciador de módulos para uma aplicação Laravel com InertiaJs e VueJs.
Propósito
Este projeto tem o objetivo de deixar uma aplicação Laravel com InertiaJs com a capacidade de modularizar seus domínios. Um módulo de permissões, estoque, clientes, produtos e etc...
Todo módulo deve conter os componentes necessários para gerenciar o estado dos dados nele contido. Também podemos configurar módulos que dependam de outros e assim garantir que um módulo possa ter acesso aos dados de outro por esta configuração.
Instalação
composer require rocketslab/neewton
Copiando os assets para a aplicação Laravel
php artisan neewton:install
Se não tiver o composer configurado no sistema pode indicar o caminho para ele no comando de instalação:
php artisan neewton:install --composer=<caminho para o composer>
Configurando para que a aplicação reconheça os módulos
Lado Cliente
Faça a seguinte alteração no seu arquivo app.js
para que os
módulos sejam resolvidos no InertiaJs.
Antes:
createInertiaApp(... resolve: import(`./Pages/${name}.vue`).then(module => module.default) ...)
Depois:
import neewton from './neewton'; createInertiaApp(... resolve: name => neewton(name), ...)
Laravel Mix
Verifique se seu webpack.mix.js
chama o método vue()
. Isso é
necessário para que o LaravelMix/Webpack encontre e compile os
arquivos .vue
da aplicação e dos módulos.
webpack.mix.js
mix.js('resources/js/app.js', 'public/js') .vue() // <<<<< == adicione esta linha ... // demais plugins/funções (se houver)
Lado Servidor
O Neewton registra uma tag blade @neewtonModules
para que os módulos sejam
localizados e configurados.
Adicione a tag blade no arquivo app.blade.php
ou no seu próprio
arquivo de layout logo abaixo de <script src="{{ mix('js/app.js') }}" defer></script>
app.blade.php
... <!-- Active neewton modules --> @neewtonModules ...
Isso requer que seja feito uma limpeza no cache das views na primeira instalação e toda vez que houver mudança de algum módulo, seja adicionando ou removendo e tambem a recompilação dos assets do projeto/modúlos.
php artisan view:clear && npm run [dev|prod]
Configuração
Para adicionar ou remover módulos publique o arquivo de configuração do Neewton
php artisan vendor:publish --provider="RocketsLab\Neewton\NeewtonServiceProvider"
Para adicionar um módulo basta adicionar a classe que configura o módulo
no array active_modules
no config/neewton.php
Ex:
<?php return [ /* * Active modules array, put here each module registration class */ 'active_modules' => [ Module\\Exemplo\\Register::class ] ];
A documentação para criação de módulos vai estar disponível aqui:
Como criar seu módulos para o Neewton
®2021 Jorge @jjsquady Junior