ckeditor_mentions-8.x-2.x-dev/webpack.config.js
webpack.config.js
const path = require('path'); const fs = require('fs'); const webpack = require('webpack'); const TerserPlugin = require('terser-webpack-plugin'); const styles = require("@ckeditor/ckeditor5-dev-utils/lib/styles"); function getDirectories(srcpath) { return fs .readdirSync(srcpath) .filter((item) => fs.statSync(path.join(srcpath, item)).isDirectory()); } module.exports = []; // Loop through every subdirectory in src, each a different plugin, and build // each one in ./build. getDirectories('./js/ckeditor5_plugins').forEach((dir) => { const bc = { mode: 'production', optimization: { minimize: true, minimizer: [ new TerserPlugin({ terserOptions: { format: { comments: false, }, }, test: /\.js(\?.*)?$/i, extractComments: false, }), ], moduleIds: 'named', }, entry: { path: path.resolve( __dirname, 'js/ckeditor5_plugins', dir, 'src/index.js', ), }, output: { path: path.resolve(__dirname, './js/build'), filename: `${dir}.js`, library: ['CKEditor5', dir], libraryTarget: 'umd', libraryExport: 'default', }, plugins: [ // It is possible to require the ckeditor5-dll.manifest.json used in // core/node_modules rather than having to install CKEditor 5 here. // However, that requires knowing the location of that file relative to // where your module code is located. new webpack.DllReferencePlugin({ manifest: require('./node_modules/ckeditor5/build/ckeditor5-dll.manifest.json'), // eslint-disable-line global-require, import/no-unresolved scope: 'ckeditor5/src', name: 'CKEditor5.dll', }), ], module: { rules: [ { test: /\.css$/, use: [ { loader: 'style-loader', options: { injectType: 'singletonStyleTag', attributes: { 'data-cke': true } } }, 'css-loader', { loader: 'postcss-loader', options: { postcssOptions: styles.getPostCssConfig( { themeImporter: { themePath: require.resolve( '@ckeditor/ckeditor5-theme-lark' ) }, minify: true } ) } } ] }, { test: /\.svg$/, use: 'raw-loader' } ], }, }; module.exports.push(bc); });