| Install | |
|---|---|
composer require alizharb/laravel-modular-js |
|
| Latest Version: | v1.0.0 |
| PHP: | ^8.2 |
Laravel Modular JS is the official JavaScript bridge for Laravel Modular. It provides first-class support for modern frontend frameworks (Vue, React, Nuxt.js) within a modular architecture.
modular:js command with --module support.Install the package via Composer:
composer require alizharb/laravel-modular-js
Use the modular modular:js command to generate components inside your modules. You can optionally generate a matching controller with the --controller or -c flag.
# Generate a Vue component with a Controller
php artisan modular:js Post/Index --module=Blog --controller
# Generate a React component
php artisan modular:js Post/Show --module=Blog --react
# Generate a Nuxt component
php artisan modular:js Shared/Button --module=Blog --nuxt
modules/Blog/resources/js/Pages/Post/Index.vuemodules/Blog/resources/js/Pages/Post/Show.jsxmodules/Blog/resources/js/components/Shared/Button.vuemodules/Blog/app/Http/Controllers/Post/IndexController.php (if requested)Inertia requires a Resolver to map modular component names (e.g., Blog::Post/Index) to physical files. This package provides a helper you can use in your app.js.
resources/js/app.js)import { createApp, h } from 'vue';
import { createInertiaApp } from '@inertiajs/vue3';
import { resolveModularComponent } from '../../vendor/alizharb/laravel-modular-js/resources/js/resolver';
createInertiaApp({
resolve: (name) => resolveModularComponent(name, import.meta.glob([
'./Pages/**/*.vue',
'../../modules/*/resources/js/Pages/**/*.vue'
])),
setup({ el, App, props, plugin }) {
createApp({ render: () => h(App, props) })
.use(plugin)
.mount(el);
},
});
Nuxt uses auto-importing, so it does not need a runtime resolver. Instead, you simply tell Nuxt to look for components in your module directories via nuxt.config.ts.
nuxt.config.ts)export default defineNuxtConfig({
components: [
'~/components', // Standard components
{ path: '../../modules/*/resources/js/components', pathPrefix: false } // Modular components
]
})
Customizing the generated code is easy. Publish the package stubs to your application:
php artisan modular:js-stubs
The stubs will be available in stubs/modular-js/.
You can change the stub path or other settings by publishing the config file:
php artisan vendor:publish --tag="modular-js-config"
Please see CONTRIBUTING for details.
The MIT License (MIT). Please see License File for more information.
Made with ❤️ by Ali Harb