Contribute to this guide

guide更新到 CKEditor 5 v43.x

更新 CKEditor 5 安装时,确保所有软件包都是相同的版本,以避免错误。

您可以尝试删除 package-lock.jsonyarn.lock 文件(如果适用)并重新安装所有软件包,然后再重建编辑器。为了获得最佳结果,请确保您使用最新的软件包版本。

# 更新到 CKEditor 5 v43.1.0

于 2024 年 9 月 5 日发布。

有关版本 43.1.0 中引入的全部更改列表,请参阅 CKEditor 5 v43.1.0 的发行说明

以下是升级到 CKEditor 5 v43.1.0 时需要您注意的最重要更改。

# 恢复最近引入的 config.sanitizeHtml

在 v43.0.0 中,我们决定将 config.htmlEmbed.sanitizeHtml 移动到顶层属性 config.sanitizeHtml,以便它可以被多个功能(HTML 嵌入、合并字段,以及将来可能的其他功能)使用。

但是,我们意识到将如此敏感的属性公开为顶层配置属性是一个错误的决定。我们担心集成者可能会感到困惑,并错误地认为此回调会对来自 CKEditor 的所有输出进行清理。因此,我们决定撤销该更改,以便清理回调与使用它的功能严格相关。

从 v43.1.0 开始,您应该再次使用 config.htmlEmbed.sanitizeHtml 和新引入的 config.mergeFields.sanitizeHtml。如果使用 config.sanitizeHtml,编辑器将抛出错误。

注意:CKEditor 5 默认情况下会阻止在编辑器内容中执行脚本,而内容正在编辑器内部进行编辑。但是,有些功能(例如通用 HTML 支持或 HTML 嵌入)可以配置为使 CKEditor 5 生成包含可执行脚本的 HTML 输出。请记住,CKEditor 5 是在浏览器中运行的前端组件。作为集成者,您有责任在内容显示在您的网站或其他可能存在漏洞的媒介上之前对其进行清理。

# 表格和单元格边框设置更新

表格的用户界面现在清楚地指示默认的边框设置。它允许用户为表格和单元格设置“无边框”(无),而无需任何其他配置。

⚠️ 在某些情况下,此更新可能会导致表格的 HTML 标记在编辑器加载它们时发生数据更改。但是,在视觉上不会发生任何变化,体验将保持一致。

# 更新到 CKEditor 5 v43.0.0

于 2024 年 8 月 7 日发布。

有关版本 43.0.0 中引入的全部更改列表,请参阅 CKEditor 5 v43.0.0 的发行说明

以下是升级到 CKEditor 5 v43.0.0 时需要您注意的最重要更改。

# 导出到 Word v2 成为默认

在 CKEditor 5 v42.0.0 中,我们引入了导出到 Word 插件的新版本,该版本使用更新的转换器(标记为 V2)。它是以选择加入的方式引入的。从 v43.0.0 开始,导出到 Word V2 是默认配置。如果您使用此插件,这可能需要更新编辑器的配置。

示例 V1 配置

exportWord: {
    tokenUrl: 'https://example.com/cs-token-endpoint',
    fileName: 'my-file.docx',
    converterOptions: {
        format: 'A4',
        margin_top: '20mm',
        margin_bottom: '20mm',
        margin_right: '12mm',
        margin_left: '12mm'
    }
}

相同迁移到 V2

exportWord: {
    tokenUrl: 'https://example.com/cs-token-endpoint',
    fileName: 'my-file.docx',
    converterOptions: {
        document: {
            size: 'A4',
            margin: {
                top: '20mm',
                bottom: '20mm',
                right: '12mm',
                left: '12mm'
            }
        }
    }
}

您可以在 ExportWordConverterOptionsV2 API 文档中找到完整的 V2 配置。

# 其他配置更改

  • 我们决定将默认的 auto_pagination 选项切换到 false。此选项仅与 分页功能 一起使用。启用后,分页中的断行会在导出的 Word 文档中强制分页符。但是,浏览器引擎和 Microsoft Word 在渲染页面元素方面存在很大差异。因此,我们决定关闭此选项。如果您仍然希望强制来自分页的断行,请在配置中将其更改为 true
  • 添加了一个新的配置选项:document.language。默认情况下,它被设置为编辑器内容语言。

# 打字错误修复

此版本对编辑器中的打字进行了一些改进。

这些修复不需要迁移,但打字是编辑器的关键领域,我们希望明确地指出它们。

# 特殊字符用户界面

特殊字符 UI 已从下拉菜单更改为对话框。这统一了菜单栏和工具栏之间的操作。它还使内容创建者在将大量符号插入内容时可以更快地访问始终位于最上层的对话框。

# UMD 构建中全局名称的更新

我们已决定更改 ckeditor5ckeditor5-premium-features 软件包在 UMD 构建中的全局名称,分别为 CKEDITORCKEDITOR_PREMIUM_FEATURES

# React 和 Vue 集成的更新

我们发布了 React 和 Vue 集成的最新主要版本。在这两个版本中,我们都已迁移到 JavaScript 模块 (ESM),并重写了其代码库的大部分内容以支持这些框架的最新版本,并遵循编写组件的最新建议。

我们强烈建议您阅读发行亮点以更新到最新版本

# 软件包生成器的更新

在 CKEditor 5 的上一个主要版本中,我们引入了新的安装方法。从那时起,我们收到了来自您的许多反馈。感谢这一点,我们发现了几个在版本 42.0.1 和 42.0.2 中修复的次要问题。虽然这些修复不需要在应用程序中进行任何更改,但它们确实需要对使用软件包生成器创建的自定义插件进行一些更改。

如果您尚未阅读 迁移自定义插件 指南,则可以跳过本节。但是,如果您已经阅读过,请按照以下步骤将这些修复应用于您的插件。

  1. 将所有以 @ckeditor/ckeditor5-dev- 开头的软件包更新到版本 ^42.0.0

  2. 打开 package.json 文件并替换内容如下

    • 如果您的项目是用 TypeScript 编写的,请替换 "types""exports" 字段

      "types": "dist/index.d.ts",
      "exports": {
          ".": {
              "types": "./dist/index.d.ts",
              "import": "./dist/index.js"
          },
          "./*": "./dist/*",
          "./browser/*": null,
          "./package.json": "./package.json"
      }
      
    • 如果您的项目是用纯 JavaScript 编写的,请替换 “exports” 字段

      "exports": {
          ".": "./dist/index.js",
          "./*": "./dist/*",
          "./browser/*": null,
          "./package.json": "./package.json"
      }
      
  3. 打开 scripts/build-dist.mjs 文件,并在第二个 build() 步骤中查找 name 对象键。此值表示插件在 UMD 构建中可用的全局变量,目前应与您的软件包名称匹配。UMD 是一种我们为那些无法在他们的应用程序中使用 JavaScript 模块的人提供的替代构建格式。我们鼓励您将此值更新为 CKEDITOR_PLUGIN_X,其中 X 唯一标识您的插件。我们建议仅使用大写字母和下划线 (_)。