@ckeditor/ckeditor5-dev-utils
Version:
Utils for CKEditor 5 development tools packages.
57 lines (45 loc) • 1.74 kB
JavaScript
/**
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md.
*/
;
const fs = require( 'fs' );
const getPlugins = require( './getplugins' );
const getEditorConfig = require( './geteditorconfig' );
/**
* Generates an entry file which can be compiled by bundler, e.g. Webpack or Rollup.
*
* @param {String} destinationPath A path where entry file will be saved.
* @param {Object} options
* @param {Array.<String>} options.plugins An array with paths to the plugins for the editor.
* @param {String} options.moduleName Name of exported UMD module.
* @param {String} options.editor A path to class which defined the editor.
* @param {Object} options.config Additional editor's configuration which will be built-in.
*/
module.exports = function createEntryFile( destinationPath, options ) {
const entryFileContent = renderEntryFile( options );
fs.writeFileSync( destinationPath, entryFileContent );
};
function renderEntryFile( options ) {
const plugins = getPlugins( options.plugins );
const date = new Date();
let content = `/**
* @license Copyright (c) 2003-${ date.getFullYear() }, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md.
*/
import ${ options.moduleName }Base from '${ options.editor }';
`;
for ( const pluginName of Object.keys( plugins ) ) {
content += `import ${ pluginName } from '${ plugins[ pluginName ] }';\n`;
}
content += `
export default class ${ options.moduleName } extends ${ options.moduleName }Base {}
${ options.moduleName }.build = {
plugins: [
${ Object.keys( plugins ).join( ',\n\t\t' ) }
],
config: ${ getEditorConfig( options.config ) }
};
`;
return content;
}