Skip to content

Commit

Permalink
wp-env: Add lifecycleScripts to the schema (#68724)
Browse files Browse the repository at this point in the history
* Add lifecycleScripts to the README

* Add lifecycleScripts to the schema/README for @wordpress/env

* Adjust from code review feedback

Co-authored-by: srtfisher <[email protected]>
Co-authored-by: t-hamano <[email protected]>
  • Loading branch information
3 people authored Feb 6, 2025
1 parent 269ebe6 commit 484ace3
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 14 deletions.
27 changes: 14 additions & 13 deletions packages/env/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -479,19 +479,20 @@ You can customize the WordPress installation, plugins and themes that the develo

`.wp-env.json` supports fields for options applicable to both the tests and development instances.

| Field | Type | Default | Description |
|--------------------|----------------|----------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|
| `"core"` | `string\|null` | `null` | The WordPress installation to use. If `null` is specified, `wp-env` will use the latest production release of WordPress. |
| `"phpVersion"` | `string\|null` | `null` | The PHP version to use. If `null` is specified, `wp-env` will use the default version used with production release of WordPress. |
| `"plugins"` | `string[]` | `[]` | A list of plugins to install and activate in the environment. |
| `"themes"` | `string[]` | `[]` | A list of themes to install in the environment. |
| `"port"` | `integer` | `8888` (`8889` for the tests instance) | The primary port number to use for the installation. You'll access the instance through the port: 'http://localhost:8888'. |
| `"testsPort"` | `integer` | `8889` | The port number for the test site. You'll access the instance through the port: 'http://localhost:8889'. |
| `"config"` | `Object` | See below. | Mapping of wp-config.php constants to their desired values. |
| `"mappings"` | `Object` | `"{}"` | Mapping of WordPress directories to local directories to be mounted in the WordPress instance. |
| `"mysqlPort"` | `integer` | `null` (randomly assigned) | The MySQL port number to expose. The setting is only available in the `env.development` and `env.tests` objects. |
| `"phpmyadminPort"` | `integer` | `null` | The port number for phpMyAdmin. If provided, you'll access phpMyAdmin through: http://localhost:<port> |
| `"multisite"` | `boolean` | `false` | Whether to set up a multisite installation. |
| Field | Type | Default | Description |
|----------------------|----------------|----------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|
| `"core"` | `string\|null` | `null` | The WordPress installation to use. If `null` is specified, `wp-env` will use the latest production release of WordPress. |
| `"phpVersion"` | `string\|null` | `null` | The PHP version to use. If `null` is specified, `wp-env` will use the default version used with production release of WordPress. |
| `"plugins"` | `string[]` | `[]` | A list of plugins to install and activate in the environment. |
| `"themes"` | `string[]` | `[]` | A list of themes to install in the environment. |
| `"port"` | `integer` | `8888` (`8889` for the tests instance) | The primary port number to use for the installation. You'll access the instance through the port: 'http://localhost:8888'. |
| `"testsPort"` | `integer` | `8889` | The port number for the test site. You'll access the instance through the port: 'http://localhost:8889'. |
| `"config"` | `Object` | See below. | Mapping of wp-config.php constants to their desired values. |
| `"mappings"` | `Object` | `"{}"` | Mapping of WordPress directories to local directories to be mounted in the WordPress instance. |
| `"mysqlPort"` | `integer` | `null` (randomly assigned) | The MySQL port number to expose. The setting is only available in the `env.development` and `env.tests` objects. |
| `"phpmyadminPort"` | `integer` | `null` | The port number for phpMyAdmin. If provided, you'll access phpMyAdmin through: http://localhost:<port> |
| `"multisite"` | `boolean` | `false` | Whether to set up a multisite installation. |
| `"lifecycleScripts"` | `Object` | `"{}"` | Mapping of commands that should be executed at certain points in the lifecycle. |

_Note: the port number environment variables (`WP_ENV_PORT` and `WP_ENV_TESTS_PORT`) take precedent over the .wp-env.json values._

Expand Down
21 changes: 20 additions & 1 deletion schemas/json/wp-env.json
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,25 @@
"description": "The port number for the test site. You'll access the instance through the port: http://localhost:8889",
"type": "integer",
"default": 8889
},
"lifecycleScripts": {
"description": "Mapping of commands that should be executed at certain points in the lifecycle.",
"type": "object",
"default": {},
"properties": {
"afterStart": {
"description": "Runs after wp-env start has finished setting up the environment.",
"type": "string"
},
"afterClean": {
"description": "Runs after wp-env clean has finished cleaning the environment.",
"type": "string"
},
"afterDestroy": {
"description": "Runs after wp-env destroy has destroyed the environment.",
"type": "string"
}
}
}
}
},
Expand All @@ -130,7 +149,7 @@
"$ref": "#/definitions/wpEnvPropertyNames"
},
{
"enum": [ "$schema", "env", "testsPort" ]
"enum": [ "$schema", "env", "testsPort", "lifecycleScripts" ]
}
]
}
Expand Down

0 comments on commit 484ace3

Please sign in to comment.