Contribute to this guide

指南自定义插件的版本兼容性

本指南解释了如何使您的自定义 CKEditor 5 插件与多个版本的 CKEditor 5 兼容。确保您的插件适用于最新的 CKEditor 5 版本非常重要,但将其与旧版本兼容也是一个好习惯。这样,无法升级到最新版本的使用者仍然可以使用您的插件。

# 不同的构建和版本

CKEditor 5 可通过不同的安装方式和版本获得。幸运的是,版本之间的唯一区别是编辑器及其插件的导入方式。所有其他 API 保持不变。

版本 42.0.0 中引入的当前支持的安装方式需要使用 ckeditor5 包导入编辑器及其开源插件,并使用 ckeditor5-premium-features 包导入高级功能。在 42.0.0 版本之前,CKEditor 5 有多个构建,需要使用不同的导入路径导入编辑器及其插件。

# 选择合适的支持策略

首先,您需要决定要支持哪些版本的 CKEditor 5,因为它将定义您需要使用的导入。

如果您的插件在您无法控制的项目中使用(例如,如果您的插件是开源的),您应该考虑支持广泛的版本范围,这些项目可能使用旧的安装方式。如果您正在为特定项目开发插件,可以选择仅支持该项目中使用的安装方式。

但是,请注意,支持旧的安装方式需要您使用将来将被弃用的旧导入。一旦旧的安装方式被弃用,您将需要更新您的插件。

# 仅支持版本 42.0.0 及更高版本

如果您只想支持最新版本的 CKEditor 5,可以使用 ckeditor5 包导入编辑器及其插件。

如果您选择这种方法,一旦旧的安装方式被弃用,您将不需要对插件进行任何更改,但代价是不支持低于 42.0.0 的版本。

import { Plugin, ButtonView } from 'ckeditor5';

如果您需要使用高级功能,可以使用 ckeditor5-premium-features 包导入它们。

import { AIAssistant } from 'ckeditor5-premium-features';

# 支持旧版本

如果您要支持旧版本的 CKEditor 5,您无法从 ckeditor5ckeditor5-premium-features 导入,而是使用旧的导入路径。您需要遵循三个规则

  1. 如果您需要从以下任何包导入代码,您必须使用 ckeditor5/src/* 导入,而不是包名

    • @ckeditor/ckeditor5-clipboard,
    • @ckeditor/ckeditor5-core,
    • @ckeditor/ckeditor5-engine,
    • @ckeditor/ckeditor5-enter,
    • @ckeditor/ckeditor5-paragraph,
    • @ckeditor/ckeditor5-select-all,
    • @ckeditor/ckeditor5-typing,
    • @ckeditor/ckeditor5-ui,
    • @ckeditor/ckeditor5-undo,
    • @ckeditor/ckeditor5-upload,
    • @ckeditor/ckeditor5-utils,
    • @ckeditor/ckeditor5-watchdog,
    • @ckeditor/ckeditor5-widget.

    例如,要导入来自 @ckeditor/ckeditor5-core 包的代码,您需要使用 ckeditor5/src/core.js 导入。

  2. 如果您需要从 @ckeditor/ckeditor5-collaboration-core 包导入代码,您必须使用 ckeditor5-collaboration/src/core.js 导入。

  3. 在所有其他情况下,您可以使用包名作为导入路径。您应该只从主包入口点导入,而不是从子文件夹导入。

    // ✅
    import { Table } from '@ckeditor/ckeditor5-table';
    
    // ❌
    import Table from '@ckeditor/ckeditor5-table/src/table';
    
    // ❌
    import TableRowIcon from '@ckeditor/ckeditor5-table/theme/icons/table-row.svg';
    

在构建过程中,这些导入在为旧版本的 CKEditor 5 生成捆绑包时将按原样使用,但在为最新版本生成捆绑包时将替换为 ckeditor5ckeditor5-premium-features