/** * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ 'use strict'; /* eslint-env node */ const path = require( 'path' ); const webpack = require( 'webpack' ); const { bundler, loaders } = require( '@ckeditor/ckeditor5-dev-utils' ); const { CKEditorTranslationsPlugin } = require( '@ckeditor/ckeditor5-dev-translations' ); const TerserPlugin = require( 'terser-webpack-plugin' ); module.exports = { devtool: 'source-map', performance: { hints: false }, entry: path.resolve( __dirname, 'src', 'ckeditor.ts' ), output: { // The name under which the editor will be exported. library: 'CKEditor', path: path.resolve( __dirname, 'build' ), filename: 'ckeditor.js', libraryTarget: 'umd', libraryExport: 'default' }, optimization: { minimizer: [ new TerserPlugin( { sourceMap: true, terserOptions: { output: { // Preserve CKEditor 5 license comments. comments: /^!/ } }, extractComments: false } ) ] }, plugins: [ new CKEditorTranslationsPlugin( { // UI language. Language codes follow the https://en.wikipedia.org/wiki/ISO_639-1 format. // When changing the built-in language, remember to also change it in the editor's configuration (src/ckeditor.js). language: 'en', additionalLanguages: 'all' } ), new webpack.BannerPlugin( { banner: bundler.getLicenseBanner(), raw: true } ) ], module: { rules: [ loaders.getIconsLoader( { matchExtensionOnly: true } ), loaders.getStylesLoader( { themePath: require.resolve( '@ckeditor/ckeditor5-theme-lark' ), minify: true } ), loaders.getTypeScriptLoader() ] }, resolve: { extensions: [ '.ts', '.js', '.json' ], extensionAlias: { '.js': [ '.js', '.ts' ] } } };