title: "开始使用 wp-scripts" post_status: publish comment_status: open taxonomy: category: - gutenberg-docs post_tag: - Devenv - Getting Started - Repos


开始使用 wp-scripts

@wordpress/scripts 包,通常被称为 wp-scripts,是一组配置文件和脚本,主要旨在标准化和简化需要 JavaScript 构建步骤的 WordPress 项目的开发流程。

JavaScript 构建步骤指的是将 JavaScript 源代码和相关资源转换、打包和优化为适合生产环境格式的过程。这些构建步骤通常将现代 JavaScript(ESNext 和 JSX)转换为与大多数浏览器兼容的版本。它们还可以将多个文件打包成一个,压缩代码以减少文件大小,并执行各种其他任务来优化代码。

在为区块编辑器开发时,您通常会使用 ESNext 和 JSX,区块编辑器手册中的所有示例都使用这些语法编写。学习如何设置构建步骤至关重要。然而,配置必要的工具如 webpackBabelESLint 可能会变得复杂。这正是 wp-scripts 发挥作用的地方。

以下是 wp-scripts 可以完成的一些任务:

该包抽象了现代 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 命令。交互式提示将引导您完成步骤。您可以按需配置,但当询问 "entry point" 时,请输入 build/index.js

当然,使用 wp-scripts 设置项目的方式有很多种,但这是整个区块编辑器手册中推荐的方案。

最后,通过运行以下命令将 wp-scripts 包安装为开发依赖项:

npm install @wordpress/scripts --save-dev

安装完成后,您的项目文件夹应如下所示:

example-project-folder/
├── build/
├── node_modules/ (自动生成)
├── src/
│   └── index.js
├── package-lock.json (自动生成)
└── package.json

Basic usage

Once installed, you can run the predefined scripts provided with wp-scripts by referencing them in the scripts section of your package.json file. Here’s an example:

{
    "scripts": {
        "start": "wp-scripts start",
        "build": "wp-scripts build"
    }
}

These scripts can then be run using the command npm run {script name}.

使用 wp-scripts 的构建流程

你最常使用的两个脚本是 startbuild,因为它们负责处理构建步骤。所有选项请参阅 package 文档

在项目开发时,请使用 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 中定义的脚本将自动入队(参见示例

要在编辑器或其他任何上下文中手动入队文件,可以参考在编辑器中入队资源指南获取更多信息,但这里是一个典型的实现。

/**
 * 入队编辑器资源。
 */
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' );

这是一个在编辑器中手动入队文件的示例

后续步骤

虽然 startbuild 是两个最常用的脚本,但 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 包含了 JavaScript 测试框架 Jest,以及端到端和单元测试脚本:

{
    "scripts": {
        "test:e2e": "wp-scripts test-e2e",
        "test:unit": "wp-scripts test-unit-js"
    }
}

单元测试验证独立的代码单元(如函数),确保它们按预期工作;而端到端测试则通过模拟真实用户场景来评估整个项目,以确保系统的所有部分无缝协作。

高级配置

虽然 wp-scripts 提供了可靠的默认配置,但有时您可能需要更专业的设置。好消息是 wp-scripts 具有高度适应性。例如,您可以扩展和覆盖默认的 webpack 配置,从而添加加载器和插件,或修改构建过程的几乎所有环节。这种灵活性确保了随着项目发展或需求变化,wp-scripts 能够适应您不断演进的需求。

有关所有配置选项,请参阅 wp-scripts 软件包文档

额外资源