Packaging
ModulesPress provides robust tools and workflows for packaging your WordPress plugins. The framework includes built-in support for versioning, asset compilation via its vite plugin, and production-ready distribution through its CLI tools.
Overview
When preparing your ModulesPress plugin for distribution, the framework handles:
- Production package creation
- Dependency optimization
- Version management
- Plugin packaging
- Release management
Pre-packaging Steps
Before creating a production package, ensure you:
-
Disable Development Mode
// plugin.php
protected bool $isDevelopment = false;
protected bool $isDebug = false; -
Build Frontend Assets
# Build Vite assets
npm run build
ModulesPress CLI
The ModulesPress CLI provides the pack
command for creating production-ready plugin packages:
# Create a production package
modulespress pack
The pack
command:
- Removes development files
- Install only production dependencies
- Optimizes Composer autoloader
- Creates a versioned ZIP package
- Maintains only production files
Production Package Structure
The final production package contains only necessary files:
your-plugin/
├── src/ # PHP source code
├── vendor/ # Production dependencies
├── views/ # Blade templates
├── build/ # Compiled vite assets
└── plugin.php # Main plugin file
Version Management
ModulesPress uses the version from your plugin header:
/**
* Plugin Name: Books Generator
* Description: Generate books for your WordPress site.
* Version: 1.0.0
* Author: Your Name
* License: GPL2
* Text Domain: books-generator
*/
The version is used for package naming.
Artifact Generation
When running modulespress pack
:
-
Version And Name Extraction
- Reads version from plugin header
- Reads plugin name from plugin header
- Creates versioned artifact name
-
Package Creation
artifacts/
└── books-generator-v1.0.0.zip -
File Selection
- Includes only production files
- Removes development artifacts
- Maintains proper structure
Excluded Files
The following are automatically excluded from production packages:
Development Files:
✗ .cache/
✗ composer.*
✗ package.*
✗ vite.config.*
✗ tsconfig.*
✗ node_modules/
✗ resources/
✗ static/
✗ tests/
✗ .git/
✗ .github/
✗ README.md
Production Optimization
The packaging process optimizes your plugin through:
-
Composer Optimization
composer install --no-dev --optimize-autoloader
-
File Structure
- Maintains clean directory structure
- Removes unnecessary files
- Preserves build assets
Distribution Best Practices
-
Pre-packaging Checklist
- Disable development mode
- Disable debug mode
- Build frontend assets
- Test production build
-
Version Control
// Always update version in plugin header
/**
* Version: 1.0.0
*/ -
Asset Verification
- Check build directory
- Verify asset loading
- Test all features
-
Documentation
- Update changelog
- Document changes
- Follow semantic versioning
Continuous Integration
Example GitHub Actions workflow:
name: Package Plugin
on:
release:
types: [created]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Dependencies
run: |
composer install
npm install
- name: Build Assets
run: npm run build
- name: Package Plugin
run: modulespress pack
Distribution Channels
After packaging, distribute through:
-
WordPress.org
- Official plugin repository
- Automatic updates
- Version tracking
-
Custom Distribution
- Self-hosted updates
- License management
- Client deployment
-
Manual Installation
- Direct ZIP installation
- Custom deployments
- Development sites
Conclusion
ModulesPress's packaging system provides a streamlined way to package WordPress plugins for production. By following the proper build steps and utilizing the CLI tools, you can create optimized, production-ready plugin packages.
Always remember to:
- Disable development mode
- Build frontend assets
- Test the production build
- Create the package using
modulespress pack