以下步骤将帮助您使用 Browserify 和 CommonJS 语法打包 .zip 版本的 TinyMCE。该过程假设用户具有使用 Browserify 和 CommonJS 语法的经验。以下步骤提供了一个使用 Browserify打包基本 TinyMCE 配置的可行示例。

要求

本指南需要以下内容:

步骤

  1. 下载并解压最新版本的 TinyMCE:

  2. 将以下开发依赖项添加到项目中。

  3. 创建一个新的源文件,用于从 TinyMCE 导入所需的组件并配置编辑器。

    示例 src/editor.js

    const fs = require('fs');
    
    /* 导入 TinyMCE */
    const tinymce = require('../tinymce/js/tinymce/tinymce.js');
    
    /* 需要默认图标。之后,如果适用,导入自定义图标 */
    require('../tinymce/js/tinymce/icons/default/icons.js');
    
    /* 所需的 TinyMCE 组件 */
    require('../tinymce/js/tinymce/themes/silver/theme.js');
    require('../tinymce/js/tinymce/models/dom/model.js');
    
    /* 导入默认皮肤(oxide)。如果需要,替换为自定义皮肤。 */
    require('../tinymce/js/tinymce/skins/ui/oxide/skin.css');
    
    /* 导入插件 - 在 'plugins' 选项中包含相关插件。 */
    require('../tinymce/js/tinymce/plugins/advlist');
    require('../tinymce/js/tinymce/plugins/code');
    require('../tinymce/js/tinymce/plugins/emoticons');
    require('../tinymce/js/tinymce/plugins/emoticons/js/emojis');
    require('../tinymce/js/tinymce/plugins/link');
    require('../tinymce/js/tinymce/plugins/lists');
    require('../tinymce/js/tinymce/plugins/table');
    require('../tinymce/js/tinymce/plugins/help');
    require('../tinymce/js/tinymce/plugins/help/js/i18n/keynav/en');
    
    /* 导入高级插件 */
    /* 从 NPM 包(推荐) */
    require('tinymce-premium/plugins/advcode');
    require('tinymce-premium/plugins/licensekeymanager');
    /* 从 ZIP 下载 - 单独下载并添加到 /src/plugins */
    /* require('./plugins/<plugincode>'); */
    
    /* 需要内容 UI CSS(使用默认的 oxide 皮肤) */
    const contentUiSkinCss = fs.readFileSync('tinymce/js/tinymce/skins/ui/oxide/content.css', { encoding: 'UTF-8' });
    
    /* 默认的内容 CSS 可以更改或替换为适合编辑器内容的 CSS。 */
    const contentCss = fs.readFileSync('tinymce/js/tinymce/skins/content/default/content.css', { encoding: 'UTF-8' });
    
    /* 初始化 TinyMCE */
    exports.render = () => {
      tinymce.init({
        selector: 'textarea#editor',
        license_key: 'gpl',
        /* 所有插件都需要导入并添加到 plugins 选项中。 */
        plugins: 'advlist code emoticons link lists table help',
        toolbar: 'bold italic | bullist numlist | link emoticons',
        skin: false,
        content_css: false,
        content_style: contentUiSkinCss.toString() + '\n' + contentCss.toString(),
        /* 可选:配置 external_plugins 以懒加载高级插件
         * 移除要懒加载的任何高级插件的 import 或 require 语句,
         * 然后取消注释并配置下面的 external_plugins:
        */
        // external_plugins: {
        //   'advcode': '/plugins/advcode/plugin.min.js',
        //   'tinycomments': '/plugins/tinycomments/plugin.min.js'
        // },
    
      });
    };
    gpl 许可证密钥用于在 GNU 通用公共许可证(GPL)下自托管 TinyMCE。要使用商业许可证或包含高级插件,请将 gpl 替换为有效的许可证密钥。有关详细信息,请参阅 设置许可证。
  4. 将 TinyMCE 资源和配置添加到项目中,并提供一个目标元素以初始化编辑器。

    示例 src/main.js

    const editor = require('./editor.js');
    /* 创建具有 id="editor" 的 textarea 以用于 TinyMCE 的 `selector` 选项 */
    const editorArea = () => {
      var element = document.createElement('textarea');
      element.id = 'editor';
      return element
    };
    /* 为 textarea 创建父元素 */
    const parent = document.createElement('p');
    /* 将元素添加到页面 */
    parent.appendChild(editorArea());
    document.body.appendChild(parent);
    /* 初始化 TinyMCE */
    editor.render();

    示例 demo.html

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>TinyMCE Browserify 演示</title>
      </head>
      <body>
        <h1>TinyMCE Browserify 演示</h1>
        <script src="main.bundle.js"></script>
      </body>
    </html>
  5. 运行 Browserify 来测试 bundle,例如:

    browserify -t brfs -g browserify-css src/main.js -o dist/main.bundle.js

    如果 Browserify 成功运行,请检查编辑器是否在应用程序中加载。如果 Browserify 运行失败,请检查所有错误并查看本过程中的配置更改;当将 TinyMCE 打包到现有项目中时,可能需要调整以解决冲突或其他问题。

后续步骤

有关以下方面的信息: