以下步骤将帮助您使用Webpack和ES6+ 语法将 TinyMCE 的 NPM 版本打包。此过程假定用户熟悉Webpack和ES6+ 语法。以下步骤提供了使用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 */ import tinymce from 'tinymce'; /* Default icons are required. After that, import custom icons if applicable */ import 'tinymce/icons/default'; /* Required TinyMCE components */ import 'tinymce/themes/silver'; import 'tinymce/models/dom'; /* Import the default skin (oxide). Replace with a custom skin if required. */ import 'tinymce/skins/ui/oxide/skin.css'; /* Import plugins */ import 'tinymce/plugins/advlist'; import 'tinymce/plugins/code'; import 'tinymce/plugins/emoticons'; import 'tinymce/plugins/emoticons/js/emojis'; import 'tinymce/plugins/link'; import 'tinymce/plugins/lists'; import 'tinymce/plugins/table'; import 'tinymce/plugins/help'; import 'tinymce/plugins/help/js/i18n/keynav/en'; /* content UI CSS is required (using the default oxide skin) */ import contentUiSkinCss from 'tinymce/skins/ui/oxide/content.css'; /* The default content CSS can be changed or replaced with appropriate CSS for the editor content. */ import contentCss from 'tinymce/skins/content/default/content.css'; /* Initialize TinyMCE */ export function render () { tinymce.init({ selector: 'textarea#editor', license_key: 'gpl', 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, use: [ 'css-loader' ], }, ], }, optimization: { splitChunks: { chunks: 'all', cacheGroups: { tinymceVendor: { test: /[\\/]node_modules[\\/](tinymce)[\\/](.*js|.*skin.css)|[\\/]plugins[\\/]/, name: 'tinymce' }, }, } }, output: { filename: '[name].js', path: path.resolve(__dirname, 'dist'), clean: true, }, };将 TinyMCE 资源和配置添加到项目中,并提供用于初始化编辑器的目标元素。
示例
src/index.jsimport * as editor from './editor'; const heading = () => { const element = document.createElement('h1'); element.innerText = 'TinyMCE Webpack demo'; return element; }; const editorArea = () => { const element = document.createElement('textarea'); element.id = 'editor'; return element; }; const parent = document.createElement('p'); parent.appendChild(editorArea()); document.body.appendChild(heading()); document.body.appendChild(parent); 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 皮肤,包括 Enhanced Skins & Icon Packs 中包含的增强皮肤,请参阅:使用模块加载捆绑 TinyMCE 皮肤。
为 TinyMCE 创建自定义皮肤,请参阅:为 TinyMCE 创建皮肤。
使用 Tiny 提供的图标包,包括 Enhanced Skins & Icon Packs 中包含的高级图标包,请参阅:使用模块加载捆绑 TinyMCE 图标包。
为 TinyMCE 创建自定义图标包,请参阅:为 TinyMCE 创建图标包。
使用语言包本地化 TinyMCE 用户界面,请参阅:捆绑 TinyMCE 的用户界面本地化。