wp_register_development_scripts()
云策文档标注
概述
wp_register_development_scripts() 是一个 WordPress 函数,用于注册与 @wordpress/scripts 集成的开发脚本,主要支持 React 刷新功能。该函数仅在特定开发环境下生效,并依赖于 SCRIPT_DEBUG 和 WP_Scripts 对象。
关键要点
- 函数用于注册开发脚本,如 react-refresh-entry 和 react-refresh-runtime,以增强开发体验。
- 仅在 SCRIPT_DEBUG 为 true、react 脚本已注册且未定义 WP_RUN_CORE_TESTS 时执行。
- 通过 WP_Scripts 对象添加脚本,并设置依赖关系和版本。
- 将 wp-react-refresh-entry 添加到 react 脚本的依赖中,以支持 React 刷新。
代码示例
function wp_register_development_scripts( $scripts ) {
if (
! defined( 'SCRIPT_DEBUG' ) || ! SCRIPT_DEBUG
|| empty( $scripts->registered['react'] )
|| defined( 'WP_RUN_CORE_TESTS' )
) {
return;
}
$development_scripts = array(
'react-refresh-entry',
'react-refresh-runtime',
);
foreach ( $development_scripts as $script_name ) {
$assets = include ABSPATH . WPINC . '/assets/script-loader-' . $script_name . '.php';
if ( ! is_array( $assets ) ) {
return;
}
$scripts->add(
'wp-' . $script_name,
'/wp-includes/js/dist/development/' . $script_name . '.js',
$assets['dependencies'],
$assets['version']
);
}
// See https://github.com/pmmmwh/react-refresh-webpack-plugin/blob/main/docs/TROUBLESHOOTING.md#externalising-react.
$scripts->registered['react']->deps[] = 'wp-react-refresh-entry';
}注意事项
- 此函数在 WordPress 6.0.0 版本中引入,主要用于开发环境,生产环境通常不启用。
- 需要确保 SCRIPT_DEBUG 常量已定义且为 true,否则函数将直接返回。
- 依赖于 react 脚本已注册,否则不会执行脚本添加操作。
- 相关资源文件位于 /wp-includes/assets/ 目录下,需确保文件存在。
原文内容
Registers development scripts that integrate with @wordpress/scripts.
Description
See also
Parameters
$scriptsWP_Scriptsrequired-
WP_Scripts object.
Source
function wp_register_development_scripts( $scripts ) {
if (
! defined( 'SCRIPT_DEBUG' ) || ! SCRIPT_DEBUG
|| empty( $scripts->registered['react'] )
|| defined( 'WP_RUN_CORE_TESTS' )
) {
return;
}
$development_scripts = array(
'react-refresh-entry',
'react-refresh-runtime',
);
foreach ( $development_scripts as $script_name ) {
$assets = include ABSPATH . WPINC . '/assets/script-loader-' . $script_name . '.php';
if ( ! is_array( $assets ) ) {
return;
}
$scripts->add(
'wp-' . $script_name,
'/wp-includes/js/dist/development/' . $script_name . '.js',
$assets['dependencies'],
$assets['version']
);
}
// See https://github.com/pmmmwh/react-refresh-webpack-plugin/blob/main/docs/TROUBLESHOOTING.md#externalising-react.
$scripts->registered['react']->deps[] = 'wp-react-refresh-entry';
}
Changelog
| Version | Description |
|---|---|
| 6.0.0 | Introduced. |