yard / nutshell
Package to enable Acorn in child themes
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 3
Type:package
pkg:composer/yard/nutshell
Requires
- php: >=8.1
- roots/acorn: ^4.3
- sentry/sentry-laravel: ^4.4
- spatie/laravel-csp: ^2.10
- yard/logger: ^1.0
Requires (Dev)
- larastan/larastan: ^2.9
- orchestra/testbench: ^8.31
- szepeviktor/phpstan-wordpress: ^1.3
- yard/php-cs-fixer-rules: ^1.0
README
Nutshell is a feature-rich package designed to extend Acorn for WordPress themes. It provides a flexible foundation for advanced theme development, including configuration inheritance, Sentry integration, Vite asset support, and more.
Features
- Child Theme Configuration Inheritance:
- Allows child themes to override parent configuration files without directory scans.
- Uses a custom configuration repository to support unsetting and merging config values.
- Vite Asset Support:
- Integrates with Vite for modern asset bundling and hot reloading.
- Sentry Integration:
- Seamless error reporting via Sentry for Laravel.
- Custom View Composers:
- Manual registration of view composers for fine-grained control.
- Custom Console Commands:
- Register custom Artisan commands via configuration.
Requirements
- PHP >= 8.1
- Acorn ^4.3
- Composer
Installation
-
Install this package with composer
composer require yard/nutshell
-
Ensure your project's
composer.jsonuses PSR-4 autoloading for your theme and childtheme and remove any redundant autoloading from the theme itself."autoload": { "psr-4": { "App\\": "web/app/themes/sage/app/", + "ChildTheme\\App\\": "web/app/themes/child-theme/app/", } },
Configuration
Important
After this change:
- View Composers in the app/View/Composers directory will no longer be loaded automatically. To ensure they are registered, you have to configure them manually.
- Console Commands in the app/Console/Commands directory will no longer be loaded automatically. To ensure they are register, you have to configure them manually.
-
Child Theme Setup
-
Create a child theme with Sage as the parent theme. See WordPress Child Themes.
Example
style.css:/** * Theme Name: Sage Child Theme * Template: sage * Theme URI: https://www.example.com/sage-child/ * Description: Sage child theme * Version: 1.0.0 * Author: Example Inc. * Author URI: http://www.example.com/ * Text Domain: sage * License: MIT License * License URI: https://opensource.org/licenses/MIT * Requires PHP: 8.1 * Requires at least: 5.9 */ ```
-
Place your configuration files in
config/within your child theme directory. These will be merged with the parent configuration where child theme configuration takes precedence. To unset a configuration option from the parent theme in the child theme you can pass an empty array for that configuration option.
-
-
Update Acorn Bootloader
-
In your theme's
functions.php, use theYard\Nutshell\bootloader()helper to bootstrap Acorn with Nutshell's enhancements.-\Roots\bootloader()->boot(); +define('ACORN_BASEPATH', __DIR__); +\Yard\Nutshell\bootloader()->boot();
-
-
Update app config
-
In your themes `config/app.php' replace Acorn's ServiceProvider with Nutshell's ServiceProvider
-use Roots\Acorn\ServiceProvider; +use Yard\Nutshell\ServiceProvider;
-
-
Register View Composers
-
Add your view composers to
config/view.phpunder thecomposerskey. Automatic discovery is disabled for explicit control.- 'composers' => [], + 'composers => [ + 'app' => App\View\Composers\App::class, + 'comments' => App\View\Composers\Comments::class, + 'post' => App\View\Composers\Post::class, + ],
-
-
Register Console Commands
-
Add custom Artisan commands to
config/console.phpunder thecommandskey.+ 'commands => [ + 'test' => App\Console\Commands\Test::class, + ],
-
-
Vite Integration
- Vite is enabled by default. Use the provided
Yard\Nutshell\Assets\Viteclass for asset management.
- Vite is enabled by default. Use the provided
-
Sentry Integration
- Sentry is automatically integrated if
sentry/sentry-laravelis installed and configured.
- Sentry is automatically integrated if
Usage
- Configuration Inheritance: Any config file in your child theme's
config/directory will override the parent. Empty config files will unset the corresponding configuration. - View Composers: Register all composers manually in
config/view.php. - Console Commands: Register all commands manually in
config/console.php. - Vite: Use the
@vitedirective or helper as usual; Nutshell ensures correct asset paths. - Sentry: Errors and exceptions are reported to Sentry automatically.