Module CLI Commands
AutoCom provides a comprehensive set of Artisan commands for managing modules from the command line. These commands help you create new modules, manage their state, and debug issues.
Available Commands
| Command | Description |
|---|---|
module:make |
Generate a new module with proper structure |
module:list |
List all modules and their status |
module:enable |
Enable a disabled module |
module:disable |
Disable an enabled module |
module:packages |
Check and install package dependencies |
Creating Modules
module:make
Generate a new module with the complete directory structure, service provider, routes, and frontend scaffolding.
php artisan module:make ModuleName [options]
Options
| Option | Description | Default |
|---|---|---|
--type= |
Module type (core, store, shipping, channel, payment, ai, reseller, standard) | standard |
--core |
Mark as core module (cannot be disabled) | false |
--priority= |
Loading priority (lower = earlier) | 50 |
--description= |
Module description | Auto-generated |
--depends= |
Module dependencies (repeatable) | ['Core'] |
Examples
Basic module:
php artisan module:make Inventory
Store integration module:
php artisan module:make StoreWooCommerce --type=store --depends=Core --depends=Orders
Core module with high priority:
php artisan module:make Analytics --type=core --core --priority=5
Module with custom description:
php artisan module:make Reports --description="Advanced reporting and analytics"
Generated Structure
When you run module:make, it creates:
modules/ModuleName/
├── module.json # Module configuration
├── backend/
│ ├── ModuleNameServiceProvider.php
│ ├── App/
│ │ ├── Controllers/
│ │ ├── Models/
│ │ └── Services/
│ ├── routes/
│ │ └── api.php
│ └── database/
│ └── migrations/
└── frontend/
├── pages/
│ └── index.tsx
├── components/
├── hooks/
├── types/
│ └── index.ts
└── index.ts
Listing Modules
module:list
Display all discovered modules with their status, type, priority, and dependencies.
php artisan module:list [options]
Options
| Option | Description |
|---|---|
--type= |
Filter by module type |
--graph |
Show dependency graph |
--json |
Output as JSON |
Examples
List all modules:
php artisan module:list
Output:
Discovered Modules
+----------------+--------------+----------+----------+---------+-----------------+
| Name | Alias | Type | Priority | Status | Dependencies |
+----------------+--------------+----------+----------+---------+-----------------+
| Core | core | core | 0 | CORE | - |
| CoreDashboard | dashboard | core | 5 | CORE | Core |
| Orders | orders | core | 10 | LOADED | Core |
| Products | products | core | 15 | LOADED | Core |
| Customers | customers | core | 20 | LOADED | Core |
| StoreShopify | store-shopify| store | 50 | DISABLED| Core, Orders |
| Workflows | workflows | automation| 30 | LOADED | Core |
+----------------+--------------+----------+----------+---------+-----------------+
Total: 7 modules, 5 loaded
Filter by type:
php artisan module:list --type=store
Show dependency graph:
php artisan module:list --graph
Output:
Dependency Graph:
Core
└── (no dependencies)
Orders
└── Core
StoreShopify
└── Core, Orders
Reverse Dependencies (dependents):
Core
└── used by: Orders, Products, Customers, StoreShopify, Workflows
Orders
└── used by: StoreShopify
Export as JSON (useful for CI/CD):
php artisan module:list --json > modules.json
Enabling Modules
module:enable
Enable a module, check package dependencies, and optionally install them.
php artisan module:enable ModuleName [options]
Options
| Option | Description |
|---|---|
--with-deps |
Automatically enable all module dependencies |
--install-packages |
Automatically install missing Composer/npm packages |
--skip-packages |
Skip package dependency check entirely |
Examples
Enable a single module:
php artisan module:enable StoreShopify
If dependencies are missing, you'll be prompted:
Module 'StoreShopify' has disabled dependencies: Orders
Enable dependencies as well? (yes/no) [yes]:
Enable with all dependencies automatically:
php artisan module:enable StoreShopify --with-deps
Output:
Enabling dependency: Orders
Module 'StoreShopify' has been enabled
Run 'php artisan module:list' to see all modules
Disabling Modules
module:disable
Disable a module. Core modules cannot be disabled.
php artisan module:disable ModuleName [options]
Options
| Option | Description |
|---|---|
--force |
Force disable even if other modules depend on it |
Examples
Disable a module:
php artisan module:disable StoreShopify
Force disable with dependents warning:
php artisan module:disable Orders --force
Output:
The following enabled modules depend on 'Orders':
- StoreShopify
Disable anyway? (dependent modules may break) (yes/no) [no]:
Attempting to disable a core module:
php artisan module:disable Core
Output:
Module 'Core' is a core module and cannot be disabled
Managing Package Dependencies
module:packages
Check and install Composer and npm package dependencies for all enabled modules.
php artisan module:packages [options]
Options
| Option | Description |
|---|---|
--module= |
Check a specific module only |
--install |
Automatically install all missing packages |
--json |
Output results as JSON |
Examples
Check all enabled modules:
php artisan module:packages
Output:
Package Dependency Report
PHP Version: 8.2.15
+----------------+-----+------------------+-------------+--------+
| Module | PHP | Composer Missing | npm Missing | Status |
+----------------+-----+------------------+-------------+--------+
| Core | ✓ | 0 | 0 | OK |
| Orders | ✓ | 0 | 0 | OK |
| StoreShopify | ✓ | 1 | 1 | MISSING|
+----------------+-----+------------------+-------------+--------+
Missing Packages:
StoreShopify:
composer: guzzlehttp/guzzle
npm: @shopify/polaris
To install all missing packages:
composer require guzzlehttp/guzzle
cd frontend && npm install @shopify/polaris
Or run: php artisan module:packages --install
Install all missing packages:
php artisan module:packages --install
Check a specific module:
php artisan module:packages --module=StoreShopify
Export as JSON (useful for CI/CD):
php artisan module:packages --json
Module Status File
Module states are persisted in modules/modules_statuses.json:
{
"ChannelLiveChatWidget": true,
"Core": true,
"CoreDashboard": true,
"Customers": true,
"Orders": true,
"Products": true,
"ResellerCatalog": false,
"ResellerFinance": false,
"ResellerOrders": false,
"StoreShopify": false,
"Workflows": true
}
Note: Core modules (
isCore: truein module.json) are always loaded regardless of this file.
Troubleshooting
Module not loading
-
Check if the module is enabled:
php artisan module:list -
Look for errors in the log:
tail -f storage/logs/laravel.log | grep ModuleLoader -
Verify module.json is valid JSON:
cat modules/ModuleName/module.json | jq .
Dependency errors
If you see dependency errors:
Module 'StoreShopify' requires module 'Orders' which is not available or not enabled
Enable the dependency first:
php artisan module:enable Orders
php artisan module:enable StoreShopify
Or use --with-deps:
php artisan module:enable StoreShopify --with-deps
Circular dependency detected
If you see:
Circular dependency detected: ModuleA -> ModuleB -> ModuleC -> ModuleA
Review your module.json files and remove the circular reference. Use the dependency graph to visualize:
php artisan module:list --graph
Next Steps
- Learn about Module Dependencies for proper dependency management
- Understand Module Lifecycle events and hooks
- Review Module Structure for best practices