Neewton é um gerenciador de módulos para uma aplicação Laravel com InertiaJs e VueJs.
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.
composer require rocketslab/neewton
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>
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),
...)
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)
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]
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