Make WordPress Core


Ignore:
Timestamp:
02/10/2026 10:29:49 PM (7 weeks ago)
Author:
westonruter
Message:

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.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/widgets/wpWidgetCustomHtml.php

    r59120 r61611  
    252252        $this->assertTrue( wp_script_is( 'wp-codemirror', 'enqueued' ) );
    253253        $this->assertTrue( wp_script_is( 'csslint', 'enqueued' ) );
    254         $this->assertTrue( wp_script_is( 'jshint', 'enqueued' ) );
    255254        $this->assertTrue( wp_script_is( 'htmlhint', 'enqueued' ) );
    256255    }
Note: See TracChangeset for help on using the changeset viewer.