Code Editor: Switch from Esprima to Espree for JavaScript linting in CodeMirror.
Esprima is no longer maintained, and it does not support the latest JavaScript features in ES11, as Espree does.
- New Linter Integration: Introduces
src/js/_enqueues/vendor/codemirror/javascript-lint.js using espree for parsing and error reporting, replacing the dependency on jshint and esprima scripts.
- Script Modules: Registers
espree as a script module and leverages the module_dependencies argument in wp_register_script() to ensure espree is available as a dynamic import.
- Editor Settings: Updates
wp_get_code_editor_settings() to use ES11 (ECMAScript 2020) defaults and synchronizes JSHint settings from .jshintrc for compatibility.
- Editable Extensions: Adds
.mjs to the list of editable file extensions for plugins and themes.
- Deprecations: Marks
esprima and jshint script handles as deprecated.
- Build Tools: Updates Webpack configuration to bundle
espree as a module and use the new local javascript-lint.js.
Developed in https://github.com/WordPress/wordpress-develop/pull/10806
Follow-up to [61587], [61544], [61539], [42547].
Props westonruter, jonsurrell.
See #64562, #61500, #48456, #42850.
Fixes #64558.