@wordpress/scripts 包,通常称为 wp-scripts,是一组配置文件和脚本,主要旨在标准化并简化需要 JavaScript 构建步骤的 WordPress 项目的开发过程。
JavaScript 构建步骤是指将 JavaScript 源代码及相关资源转换为适合生产环境的格式的过程。这些构建步骤通常会将现代 JavaScript(ESNext 和 JSX)转换为与大多数浏览器兼容的版本。它们还可以将多个文件打包成一个,压缩代码以减少文件大小,并执行各种其他任务来优化代码。
在为区块编辑器构建时,您通常会使用 ESNext 和 JSX,且区块编辑器手册中的所有示例都是用这些语法编写的。学习如何设置构建步骤至关重要。然而,配置必要的工具(如 webpack、Babel 和 ESLint)可能会变得复杂。这就是 wp-scripts 发挥作用的地方。
以下是 wp-scripts 可以完成的一些任务:
- 编译:使用 Babel 将现代 JavaScript(ESNext 和 JSX)转换为与大多数浏览器兼容的代码。
- 打包:使用 webpack 将多个 JavaScript 文件组合成一个包,以获得更好的性能。
- 代码检查:提供 ESLint 配置以帮助确保代码质量和符合编码标准。
- 代码格式化:集成 Prettier 进行自动化代码样式设置,以保持项目中一致的代码格式。
- Sass 编译:将 Sass(.scss 或 .sass)文件转换为标准 CSS。
- 代码压缩:减小生产环境中 JavaScript 代码的大小,以确保更快的页面加载。
该包抽象了与为现代 WordPress 进行 JavaScript 开发相关的许多初始设置、配置和样板代码。然后您可以专注于构建区块和区块编辑器扩展。
快速开始
如果您使用@wordpress/create-block 包来搭建创建和注册区块所需的文件结构,您还将获得无需配置的现代 JavaScript 构建设置(使用 wp-scripts),因此您无需担心安装 wp-scripts 或加载资源。有关更多详细信息,请参阅 使用 create-block 快速开始。安装
确保您的计算机上已安装 Node.js 和 npm。如果没有,请查看 Node.js 开发环境 指南。
然后,创建一个项目文件夹,并确保其中包含 package.json 文件、build 文件夹和 src 文件夹。src 文件夹还应包含一个 index.js 文件。
如果您之前没有创建过 package.json 文件,请在终端中导航到项目文件夹并运行 npm init 命令。交互式提示将引导您完成步骤。根据您的喜好进行配置,但当它询问“入口点”时,请输入 build/index.js。
当然,使用 wp-scripts 设置项目的方法有很多,但这是区块编辑器手册中推荐的方法。
最后,通过运行以下命令将 wp-scripts 包作为开发依赖项安装:
npm install @wordpress/scripts --save-dev
安装完成后,您的项目文件夹应如下所示:
example-project-folder/
├── build/
├── node_modules/ (autogenerated)
├── src/
│ └── index.js
├── package-lock.json (autogenerated)
└── package.json
基本用法
安装后,您可以通过在 package.json 文件的 scripts 部分引用它们来运行 wp-scripts 提供的预定义脚本。示例如下:
{
"scripts": {
"start": "wp-scripts start",
"build": "wp-scripts build"
}
}
然后可以使用命令 npm run {script name} 运行这些脚本。
使用 wp-scripts 的构建过程
您最常使用的两个脚本是 start 和 build,因为它们处理构建步骤。有关所有选项,请参阅 包文档。
在处理项目时,请使用 npm run start 命令。这将启动开发服务器,并在检测到任何更改时自动重新构建项目。请注意,build/index.js 中的编译代码不会进行优化。
当您准备好部署项目时,请使用 npm run build 命令。这将优化您的代码并使其适合生产环境。
构建完成后,您将在 build/index.js 处看到创建的编译 JavaScript 文件。
在构建过程中还会创建一个 build/index.asset.php 文件,其中包含依赖项数组和版本号(用于缓存清除)。请注意,如果您想在没有此 wp-scripts 构建过程的情况下注册区块,您需要手动创建 *.asset.php 依赖项文件(参见 示例)。
加载资源
如果您通过 register_block_type 注册区块,block.json 中定义的脚本将自动加载(参见 示例)。
要在编辑器中手动加载文件,或在任何其他上下文中,您可以参考 在编辑器中加载资源 指南以获取更多信息,但这里是一个典型的实现。
/**
* Enqueue Editor assets.
*/
function example_project_enqueue_editor_assets() {
$asset_file = include( plugin_dir_path( __FILE__ ) . 'build/index.asset.php');
wp_enqueue_script(
'example-editor-scripts',
plugins_url( 'build/index.js', __FILE__ ),
$asset_file['dependencies'],
$asset_file['version']
);
}
add_action( 'enqueue_block_editor_assets', 'example_project_enqueue_editor_assets' );
以下是 在编辑器中手动加载文件的示例。
下一步
虽然 start 和 build 将是最常用的两个脚本,但 wp-scripts 还附带了几个值得探索的其他有用工具。以下是其中几个的概览。
维护代码质量
为了帮助开发人员提高代码质量,wp-scripts 预配置了 ESLint 和 Prettier 等工具。ESLint 确保您的 JavaScript 遵循最佳实践和 WordPress 编码标准,而 Prettier 会自动格式化您的代码。可用的脚本包括:
{
"scripts": {
"format": "wp-scripts format",
"lint:css": "wp-scripts lint-style",
"lint:js": "wp-scripts lint-js",
}
}
定期检查和格式化您的代码可确保其功能正常、清晰且易于您和其他开发人员维护。
运行测试
wp-scripts test-unit-js 运行您项目中安装的 Vitest 以进行单元测试。对于新的测试设置,请将 Vitest 5 和 Vite 8 作为开发依赖项安装:
npm install --save-dev vitest@^5 vite@^8
如果您的项目已经使用 Vite 7 或 8,请保留它们并仅安装 vitest@^5。
wp-scripts 还提供 Playwright 用于端到端测试。将这些命令添加到 package.json:
{
"scripts": {
"test:e2e": "wp-scripts test-e2e",
"test:unit": "wp-scripts test-unit-js"
}
}
单元测试检查单个函数或组件。端到端测试通过用户交互检查应用程序。
有关 Vitest 配置和示例(包括 DOM 和浏览器测试)的信息,请参阅 消费者迁移指南。现有的 Jest 项目可以使用 wp-scripts test-unit-jest 并遵循 保留现有的 Jest 套件 以获取所需的依赖项和配置。
高级配置
虽然 wp-scripts 提供了完善的默认配置,但在某些情况下您可能需要更专业的设置。好消息是 wp-scripts 具有极高的可适应性。例如,您可以扩展并覆盖默认的 webpack 配置,从而添加加载器和插件或修改构建过程的几乎任何部分。这种灵活性确保随着项目增长或其需求变化,wp-scripts 可以量身定制以满足您不断变化的需求。
有关所有配置选项,请参阅 wp-scripts 包文档。
其他资源
- @wordpress/scripts(官方文档)
- webpack 与 WordPress 包如何交互(WordPress 开发者博客)