{"id":12964,"library":"ckeditor5-build-classic","title":"CKEditor 5 Classic Editor Build","description":"CKEditor 5 Classic Editor Build provides a ready-to-use rich-text editor, offering a familiar WYSIWYG interface with a toolbar at the top. The current stable versions of the CKEditor 5 framework are generally in the v47.x to v48.x range, though this specific `ckeditor5-build-classic` package is now deprecated. CKEditor 5 maintains a rapid release cadence, typically publishing new major versions every six months, with a Long-Term Support (LTS) edition released every two years for extended stability. Key differentiators include its modern MVC architecture, custom data model, virtual DOM, and native TypeScript implementation, making it highly modular and extensible. It is designed as a framework for creating custom editing solutions, supporting diverse use cases from simple text areas to complex collaborative environments. The library is dual-licensed under GPL 2+ for open-source projects and a commercial license for closed-source applications or access to premium features and LTS.","status":"deprecated","version":"1.0.0","language":"javascript","source_language":"en","source_url":"https://github.com/whande1992/CKEditor5-all","tags":["javascript"],"install":[{"cmd":"npm install ckeditor5-build-classic","lang":"bash","label":"npm"},{"cmd":"yarn add ckeditor5-build-classic","lang":"bash","label":"yarn"},{"cmd":"pnpm add ckeditor5-build-classic","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"This package is deprecated. The modern recommended approach is to use new installation methods or the CKEditor 5 online builder for custom builds.","wrong":"const ClassicEditor = require('@ckeditor/ckeditor5-build-classic');","symbol":"ClassicEditor","correct":"import ClassicEditor from '@ckeditor/ckeditor5-build-classic';"},{"note":"For direct browser usage, the ClassicEditor global is available after loading the compiled build script. This method is also affected by the package deprecation.","wrong":null,"symbol":"ClassicEditor (global)","correct":"<script src=\"./node_modules/@ckeditor/ckeditor5-build-classic/build/ckeditor.js\"></script>"},{"note":"When creating custom builds or extending the editor, specific types like EditorConfig are imported from individual `@ckeditor/ckeditor5-*` packages, following the new installation methods. Deep imports (e.g., from `src/`) can lead to module duplication.","symbol":"EditorConfig","correct":"import { EditorConfig } from '@ckeditor/ckeditor5-core';"}],"quickstart":{"code":"import ClassicEditor from '@ckeditor/ckeditor5-build-classic';\n\nconst editorElement = document.createElement('div');\neditorElement.setAttribute('id', 'editor');\neditorElement.innerHTML = '<p>This is the editor content.</p>';\ndocument.body.appendChild(editorElement);\n\nClassicEditor\n\t.create( editorElement )\n\t.then( editor => {\n\t\twindow.editor = editor;\n\t\tconsole.log( 'Editor was initialized', editor );\n\t} )\n\t.catch( err => {\n\t\tconsole.error( 'There was a problem initializing the editor.', err.stack );\n\t} );","lang":"javascript","description":"This code demonstrates how to initialize the CKEditor 5 Classic Editor using an ES module import and attach it to a DOM element, then logs the editor instance or any errors. It showcases the basic setup for programmatic use."},"warnings":[{"fix":"Migrate your project to the new installation methods described in the official CKEditor 5 documentation or use the online builder to generate a custom build. Consider integrating directly from source if deeper customization is needed.","message":"The `@ckeditor/ckeditor5-build-classic` npm package, along with other predefined builds, is officially deprecated. Users are strongly encouraged to migrate to CKEditor 5's new installation methods (NIM) or use the CKEditor 5 online builder to create custom builds for future updates and feature access.","severity":"breaking","affected_versions":">=42.0.0"},{"fix":"Review your project's licensing requirements. For commercial, closed-source applications, or to access premium features/LTS, acquire a commercial license from CKSource. For open-source projects with GPL-incompatible licenses, contact CKSource for alternative open-source licensing.","message":"CKEditor 5 is dual-licensed under GPL 2+ for open-source projects and a commercial license for closed-source applications or those requiring premium features (e.g., collaboration, specific exports, AI Assistant, LTS). Using the open-source distribution in a closed-source commercial product without a commercial license can lead to legal issues due to GPL's copyleft nature.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Always consult the official update guides and changelogs before upgrading across major versions. Pay close attention to migration instructions for API changes, configuration updates, and deprecated features. Ensure all CKEditor 5 packages in your project are of the same version to avoid conflicts.","message":"CKEditor 5 undergoes frequent major releases (typically every 6 months), which often introduce breaking changes. These can affect editor configuration, plugin APIs, styling, and specific features.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Utilize the CKEditor 5 online builder or integrate the CKEditor 5 framework directly into your project to create a custom build that includes all necessary plugins and configurations.","message":"CKEditor 5 is designed as a modular framework, encouraging users to build custom editors tailored to their needs. Predefined builds like `ckeditor5-build-classic` offer a limited set of features. Missing functionalities (e.g., specific styling options, new plugins) are common if you rely solely on these deprecated builds.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-19T00:00:00.000Z","next_check":"2026-07-18T00:00:00.000Z","problems":[{"fix":"Ensure all CKEditor 5 packages are updated to the latest compatible versions. If using custom plugins, verify their compatibility. Review your project's import statements to ensure consistent use of either new installation methods (importing from `@ckeditor/ckeditor5` or specific packages) or legacy build imports, avoiding mixing them. Clean `node_modules` and reinstall dependencies.","cause":"This error occurs when CKEditor 5 modules are evaluated and executed multiple times, often due to mixed import methods (e.g., legacy vs. new installation methods), incompatible plugin versions, or incorrect bundler configurations.","error":"CKEditorError: ckeditor-duplicated-modules: Some CKEditor 5 modules are duplicated."},{"fix":"If using ES modules, ensure `import ClassicEditor from '@ckeditor/ckeditor5-build-classic';` is at the top of your script. If using a `<script>` tag, ensure `ckeditor.js` is loaded before attempting to call `ClassicEditor.create()` and that the script is not in a module context (e.g., `<script type=\"module\">`). Verify file paths are correct.","cause":"This typically happens if the `ClassicEditor` symbol is not correctly imported or made available in the global scope. It can be caused by incorrect script loading order, issues with module resolution, or attempting to use module syntax in a non-module environment without proper bundling.","error":"TypeError: ClassicEditor.create is not a function"},{"fix":"Check for conflicting versions of ESLint or other build tools in your `package.json` and in any forked CKEditor 5 repositories. Ensure consistent dependency versions. If creating a custom build, follow the official documentation for building and integrating, potentially pushing your custom build to a separate repository and installing it from there.","cause":"This error often indicates a conflict in ESLint or webpack configurations, particularly when working with custom CKEditor 5 builds or forking repositories with different dependency versions.","error":"Error: Failed to load config \"ckeditor5\" to extend from."}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":""}