Installation:
composer require mpociot/documentarian
Publish the configuration and assets:
php artisan vendor:publish --provider="Mpociot\Documentarian\DocumentarianServiceProvider"
Configuration:
Update config/documentarian.php to define your API documentation paths:
'paths' => [
'documentation' => resource_path('docs'),
'assets' => public_path('docs/assets'),
],
First Use Case:
Create a README.md in resource_path('docs') with basic API structure:
# API Documentation
## Introduction
Welcome to our API!
## Endpoints
### GET /users
```json
{
"users": [...]
}
Run `php artisan documentarian:serve` to preview locally at `http://localhost:8000/docs`.
Markdown-Based Documentation:
resource_path('docs/endpoints/users.md')).---
endpoint: /users
method: GET
---
# Users Endpoint
Fetch all users.
Laravel Route Integration:
Add a route in routes/web.php:
Route::get('/docs', function () {
return Documentarian::render();
});
Asset Management:
public_path('docs/assets').php artisan vendor:publish --tag=documentarian-assets
Custom Templates:
Extend the default theme by copying vendor/mpociot/documentarian/resources/views to resources/views/vendor/documentarian and modifying as needed.
Edit and Preview:
php artisan documentarian:serve
Auto-reloads changes during development.
Generate Static Files:
php artisan documentarian:build
Compiles assets and generates static HTML for production.
Versioning:
Use subdirectories (e.g., resource_path('docs/v1')) for API versioning and include version-specific routes.
Asset Paths:
public_path('docs/assets') is writable. Permissions issues may break asset compilation.php artisan view:clear
Markdown Parsing:
users.md works; users@123.md may fail).Laravel Caching:
// config/documentarian.php
'cache' => env('APP_ENV') !== 'local',
Route Conflicts:
/docs doesn’t conflict with existing routes. Use middleware to restrict access:
Route::get('/docs', function () {
return Documentarian::render();
})->middleware('auth');
Check Logs: Run with verbose output:
php artisan documentarian:serve --verbose
Validate Markdown: Use a Markdown linter (e.g., Markdown Lint) to catch syntax errors.
Frontmatter Validation: Test YAML frontmatter with:
composer require --dev symfony/yaml
Then validate in PHP:
use Symfony\Component\Yaml\Yaml;
$yaml = Yaml::parse(file_get_contents('path/to/file.md'));
Custom Renderers:
Extend Mpociot\Documentarian\Renderers\RendererInterface to support additional formats (e.g., JSON schemas).
Hooks:
Override the DocumentarianServiceProvider to add middleware or filters:
public function boot()
{
Documentarian::extend(function ($renderer) {
// Modify renderer behavior
});
}
API Blueprints: Integrate with tools like API Blueprint by converting blueprints to Markdown before processing.
- name: Build Documentation
run: php artisan documentarian:build
resources/views/vendor/documentarian/layouts/master.blade.php.How can I help you explore Laravel packages today?