Lazy-loading TinyMCE from a .zip package in Vue.js
This guide shows how to self-host and lazy-load TinyMCE from a .zip package in a Vue.js application using the TinyMCE Vue.js component.
Prerequisites
This procedure requires:
-
Node.js LTS (recommended).
-
Vue CLI (optional).
Procedure
-
Create a new Vue project named
tinymce-vue-demousing the Create Vue tool.-
From a command line or command prompt, create a Vue.js 3.x project:
tinymce-vue-demo.npm create vue@3 -
If a Vue.js 2.x project is required, instead use:
npm create vue@2 -
Follow the prompts and type
tinymce-vue-demoas the project name.
-
-
Change into the newly created directory.
cd tinymce-vue-demo -
Install the
tinymce-vuepackage.-
For Vue.js 3.x users:
npm install @tinymce/tinymce-vue -
For Vue.js 2.x users:
npm install @tinymce/tinymce-vue@^3
-
-
Unzip the content of the
tinymce/jsfolder from the TinyMCE zip into thepublicfolder. -
Update
App.vuewith the below code snippet. Note:tinymceSrcScriptreferences to the publictinymceusing absolute root path.<script setup> import Editor from '@tinymce/tinymce-vue' </script> <template> <main id="sample"> <img alt="Vue logo" class="logo" src="./assets/logo.svg" width="125" height="125" /> <Editor id="<uid>" licenseKey="gpl" tinymceScriptSrc="/tinymce/tinymce.min.js" :init="{ plugins: 'advlist anchor autolink code help image insertdatetime link lists media table wordcount', toolbar: 'undo redo | styles | bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image', height: 500 }" /> </main> </template> <style scoped> .logo { display: block; margin: 0 auto 2rem; } @media (min-width: 1024px) { #sample { display: flex; flex-direction: column; place-items: center; width: 1000px; } } </style> -
To start the development server, run:
npm run dev
Other resources
-
For examples of
tinymce-vuewrapper, see: the tinymce-vue storybook. -
To report an issue, please go to: TinyMCE Vue.js issues.
-
For guides on integrating TinyMCE premium plugins, see: Using premium plugins.
-
For information on customizing:
-
TinyMCE integration, see: Vue.js framework Technical Reference.
-
TinyMCE, see: Basic setup.
-
The Vue.js application, see: Vue.js Documentation.
-