This guide will help you set up your development environment for contributing to Everest Forms.
- Prerequisites
- Quick Start
- Project Structure
- Development Workflow
- Building the Plugin
- Testing
- Code Standards
- Useful Commands
- Troubleshooting
Before you start, make sure you have the following installed:
-
PHP (version 5.6.20 or higher)
- Check:
php --version
- Check:
-
Node.js (version 18.0 or higher recommended)
- Check:
node --version - Download: https://nodejs.org/
- Note: While the project specifies Node 8.9.3 minimum, some dependencies require Node 18+
- Check:
-
npm (version 5.5.1 or higher)
- Check:
npm --version - Comes with Node.js
- Check:
-
Composer (for PHP dependencies)
- Check:
composer --version - Download: https://getcomposer.org/
- Check:
-
WordPress (local installation)
- You can use Local by Flywheel, XAMPP, MAMP, or @wordpress/env
git clone https://github.com/wpeverest/everest-forms.git
cd everest-formsInstall PHP dependencies:
composer installInstall Node.js dependencies:
npm installIf you already have WordPress installed (like Local by Flywheel):
- Copy or symlink the plugin folder to your WordPress plugins directory
- Example:
wp-content/plugins/everest-forms - Activate the plugin from WordPress admin
npm run prephp-installThis will start a Docker-based WordPress environment with the plugin installed.
Access your site at: http://localhost:8888
- Username:
admin - Password:
password
Run the development watcher to automatically compile assets when you make changes:
npm run devThis will watch for changes in your JavaScript and CSS files and rebuild them automatically.
everest-forms/
├── assets/ # CSS, images, and frontend JS
├── includes/ # PHP backend code
├── src/ # React source files
│ ├── blocks/ # Gutenberg blocks
│ ├── dashboard/ # Admin dashboard React app
│ └── templates/ # Form templates
├── dist/ # Compiled React files (auto-generated)
├── addons/ # Premium addons
├── templates/ # PHP templates
├── tests/ # PHPUnit tests
├── languages/ # Translation files
├── package.json # Node.js dependencies
├── composer.json # PHP dependencies
├── Gruntfile.js # Build tasks
├── webpack.config.js # Webpack configuration
└── everest-forms.php # Main plugin file
-
Start the watcher:
npm run dev
This watches your files and rebuilds on changes.
-
Make your changes:
- Edit files in
src/orassets/js/ - Changes are automatically compiled to
dist/
- Edit files in
-
Refresh your browser to see changes
-
Edit PHP files in:
includes/- Core functionalitytemplates/- Template files- Main plugin file:
everest-forms.php
-
Follow WordPress Coding Standards:
- Check your code:
composer run-script phpcs - Auto-fix issues:
composer run-script phpcbf
- Check your code:
-
Edit SCSS files in
assets/css/(if using Grunt) or component-specific styles -
Compile with Grunt:
grunt
or
grunt watch
For development with unminified code and source maps:
npm run devTo create a production-ready build:
npm run build:coreThis will:
- Compile and minify JavaScript
- Compile and minify CSS
- Generate translation files
To create a complete plugin ZIP file for distribution:
npm run build:zipThis creates a ZIP file ready to install on WordPress.
Run all PHP tests:
npm run test-unit-phpWatch tests (auto-rerun on changes):
npm run test-php:watchCheck code against WordPress coding standards:
npm run lint-phpor directly with Composer:
composer run-script phpcsAuto-fix code standard issues:
composer run-script phpcbfCheck JavaScript code:
npm run lint:js- Follow WordPress PHP Coding Standards
- Minimum PHP version: 5.6.20
- Use proper WordPress hooks and filters
- Sanitize and escape all input/output
- Follow WordPress JavaScript standards
- Use ES6+ features (Babel transpiles for older browsers)
- Use meaningful variable names
- Add comments for complex logic
- Write clear commit messages
- Reference issue numbers:
Fix #1234 - Description - Use conventional commits when possible:
feat:for new featuresfix:for bug fixesdocs:for documentationstyle:for formattingrefactor:for code restructuring
| Command | Description |
|---|---|
npm run dev |
Watch and compile assets for development |
npm run watch |
Same as dev |
npm run build:core |
Build production assets |
npm run build:zip |
Create distribution ZIP |
npm run lint:js |
Lint JavaScript files |
npm run makepot |
Generate translation files |
npm run test-unit-php |
Run PHP unit tests |
npm run test-php:watch |
Watch and run PHP tests |
| Command | Description |
|---|---|
grunt |
Run default build tasks |
grunt watch |
Watch and compile SCSS |
| Command | Description |
|---|---|
composer run-script phpcs |
Check PHP code standards |
composer run-script phpcbf |
Auto-fix PHP code standards |
composer run-script test |
Run PHP unit tests |
composer run-script makepot |
Generate translation POT file |
| Command | Description |
|---|---|
npx wp-env start |
Start WordPress environment |
npx wp-env stop |
Stop WordPress environment |
npx wp-env clean all |
Reset environment |
- Try deleting
node_modulesandpackage-lock.json, then runnpm installagain - Make sure you have the correct Node.js version
- Make sure Composer is installed and updated
- Try running
composer self-update
- Make sure Docker is installed and running
- Try
npx wp-env clean allto reset the environment
- Stop the dev watcher and restart it
- Check for JavaScript errors in the console
- Make sure all dependencies are installed
- On macOS/Linux, you might need to use
sudofor some commands - Or fix npm permissions: https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally
- Reset the test database:
composer run-script test:reset
- Make the script executable:
chmod +x bin/build-zip.sh
- This has been fixed in the codebase
- If you still encounter it, make sure the Gruntfile.js contains:
grunt.registerTask('default', [...])
- Documentation: https://docs.everestforms.net/
- Community Forum: https://wordpress.org/support/plugin/everest-forms
- GitHub Issues: https://github.com/wpeverest/everest-forms/issues
- Contributing Guide: See
.github/CONTRIBUTING.md
- Read the Contributing Guidelines
- Check the open issues for tasks
- Join the WordPress community forums
- Start coding!
Happy coding! 🚀