以下步骤将帮助您使用 CommonJS 语法 通过 Webpack 打包 TinyMCE 的 NPM 版本。该过程假定用户熟悉 Webpack 和 CommonJS 语法。以下步骤提供了一个使用 Webpack 打包基本 TinyMCE 配置的可运行示例。
要求
本指南需要以下内容:
Node.js 和 NPM
关于如何使用 Webpack 的基础知识
(可选:用于高级功能)TinyMCE 的最新高级
.zip包,以便包含高级插件
步骤
将
tinymce和以下开发依赖项添加到项目中。例如:
npm install tinymce && npm install --save-dev \ webpack \ webpack-cli \ mini-css-extract-plugin \ html-webpack-plugin \ css-loader
创建一个新的源文件,用于从 TinyMCE 导入所需组件并配置编辑器。
示例
src/editor.js/* Import TinyMCE */ const tinymce = require('tinymce/tinymce'); /* Default icons are required. After that, import custom icons if applicable */ require('tinymce/icons/default'); /* Required TinyMCE components */ require('tinymce/themes/silver'); require('tinymce/models/dom'); /* Import the default skin (oxide). Replace with a custom skin if required. */ require('tinymce/skins/ui/oxide/skin.css'); /* Import plugins - include the relevant plugin in the 'plugins' option. */ require('tinymce/plugins/advlist'); require('tinymce/plugins/code'); require('tinymce/plugins/emoticons'); require('tinymce/plugins/emoticons/js/emojis'); require('tinymce/plugins/link'); require('tinymce/plugins/lists'); require('tinymce/plugins/table'); require('tinymce/plugins/help'); require('tinymce/plugins/help/js/i18n/keynav/en'); /* content UI CSS is required (using the default oxide skin) */ const contentUiSkinCss = require('tinymce/skins/ui/oxide/content.css'); /* The default content CSS can be changed or replaced with appropriate CSS for the editor content. */ const contentCss = require('tinymce/skins/content/default/content.css'); /* Initialize TinyMCE */ exports.render = () => { tinymce.init({ selector: 'textarea#editor', license_key: 'gpl', /* All plugins need to be imported and added to the plugins option. */ 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() }); };gpl许可证密钥用于根据 GNU 通用公共许可证 (GPL) 自托管 TinyMCE。要使用商业许可证或包含高级插件,请将gpl替换为有效的许可证密钥。有关详细信息,请参阅 设置许可证。更新项目的 Webpack 配置以加载 TinyMCE 的 CSS 并优化 TinyMCE 的资源。
示例
webpack.config.jsconst path = require('path'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { mode: 'development', entry: './src/index.js', resolve: { extensions: ['.js'] }, plugins: [ new MiniCssExtractPlugin(), new HtmlWebpackPlugin({ title: 'TinyMCE Webpack Demo', meta: { viewport: 'width=device-width, initial-scale=1' } }), ], module: { rules: [ { test: /skin\.css$/i, use: [ MiniCssExtractPlugin.loader, 'css-loader' ], }, { test: /content\.css$/i, loader: 'css-loader', options: { esModule: false, }, }, ], }, optimization: { splitChunks: { chunks: 'all', cacheGroups: { tinymceVendor: { test: /[\\/]node_modules[\\/](tinymce)[\\/](.*js|.*skin.css)|[\\/]plugins[\\/]/, name: 'tinymce' }, }, } }, output: { filename: '[name].js', path: path.resolve(__dirname, 'public'), clean: true, }, };将 TinyMCE 的资源和配置添加到项目中,并提供一个目标元素以初始化编辑器。
示例
src/index.jsconst editor = require('./editor.js'); /* 创建一个 id="editor" 的 textarea 元素,用于 TinyMCE 的 `selector` 选项 */ const heading = () => { const element = document.createElement('h1'); element.innerText = 'TinyMCE Webpack demo'; return element }; /* 创建一个 id="editor" 的 textarea 元素,用于 TinyMCE 的 `selector` 选项 */ const editorArea = () => { const element = document.createElement('textarea'); element.id = 'editor'; return element }; /* 为 textarea 创建一个父元素 */ const parent = document.createElement('p'); /* 将元素添加到页面中 */ parent.appendChild(editorArea()); document.body.appendChild(heading()); document.body.appendChild(parent); /* 初始化 TinyMCE */ editor.render();运行 Webpack 测试打包,例如:
webpack --config webpack.config.js
如果 Webpack 运行成功,请检查编辑器是否在应用程序中加载。如果 Webpack 运行失败,请查看任何错误并检查此过程中的配置更改;您可能需要在将 TinyMCE 打包到现有项目时调整以解决冲突或其他问题。
后续步骤
有关以下信息:
将 TinyMCE 插件添加到包中,请参阅:使用模块加载打包 TinyMCE 插件。
使用 Tiny 提供的编辑器内容 CSS,包括 Enhanced Skins & Icon Packs 中包含的高级 CSS,请参阅:使用模块加载打包 TinyMCE 内容 CSS。
创建自定义编辑器内容 CSS,请参阅:内容外观选项 -
content_css。使用 Tiny 提供的 TinyMCE skins,包括 Enhanced Skins & Icon Packs 中包含的增强版 skins,请参阅:使用模块加载打包 TinyMCE skins。
为 TinyMCE 创建自定义 skin,请参阅:为 TinyMCE 创建一个 skin。
使用 Tiny 提供的 icon packs,包括 Enhanced Skins & Icon Packs 中包含的高级 icon packs,请参阅:使用模块加载打包 TinyMCE icon packs。
为 TinyMCE 创建自定义 icon pack,请参阅:为 TinyMCE 创建一个 icon pack。
使用 language pack 本地化 TinyMCE 用户界面,请参阅:打包 TinyMCE 的用户界面本地化文件。