CKReleaser is an application that exports CKEditor code, making all changes, replacements, and compilations necessary to build a public release of CKEditor. It is a command line program, with the following execution syntax:
ckreleaser release_file source_dir target_dir version file_name [--run-before-release=script] [-v | --verbose]
-
release_name
– path to the CKReleaser configuration file. -
source_dir
– the path to the development code of CKEditor. -
target_dir
– the path to the output directory. -
version
– the version string used to replace the%VERSION%
directive. -
file_name
– name of the release file to create (without the extension). -
--run-before-release=script
– (optional) the path to a script that is to be run on source files. -
-v
(or--verbose
) – (optional) enables verbose output and displays detailed exception information when an error occurs.
At the end of the process, the target_dir
directory will be created and it will contain a directory named release
, with the uncompressed version of the release files as well as the distribution files (in .zip
and .tar.gz
formats).
If you downloaded the latest editor source code from CKEditor trunk, you can also run the existing CKReleaser script. Go to the _dev/releaser
folder and run the release.bat
(for Windows) or release.sh
for Linux to trigger CKReleaser.
Configuration File
CKReleaser uses a configuration file that contains precise information about the tasks to be performed to build a release. The default configuration file for CKEditor is called ckeditor.release
. The following are its contents:
fixLineEnds : true, ignore : [ '_dev', '.svn', '.settings', '.project', '.idea' ], copy : [ { source : '_source/lang', target : 'lang', minify : true }, { source : '_source/adapters', target : 'adapters', minify : true }, { source : '_source/plugins', target : 'plugins', minify : true, ignore : { sourcePackage : 'ckeditor.pack', files : 'packages[1].files' } }, { source : '_source/themes', target : 'themes', minify : true } ], rename : [ ], packages : [ 'ckeditor.pack' ], skins : { source : '_source/skins', target : 'skins', minify : true }
Note that the configuration file uses the syntax of a JavaScript literal object declaration. This is intentional, and actually it is also possible to use JavaScript code inside the file. The entire file will then be loaded as a literal object declaration and interpreted as JavaScript code.
The following are the main entries available in the configuration:
-
fixLineEnds
– indicates that thefixlineends
application is to be run in the *output* folder at the end of the process. -
ignore
– a list of files and folder paths that are to be ignored by CKReleaser. -
copy
– a list of objects identifying files and folders to be copied to different directories in the release package. Theminify
argument specifies whether.js
and.css
files are to be minified when outputting (see "Minification" below). -
packages
– a list of configuration files to be executed by CKPackager. -
skins
– information about the skins location (see "Skins" below).
Minification
The process of reducing the size of JavaScript and CSS files by removing spaces, comments, etc. from it is called minification. Several files are to be minified on the output. We are using CKPackager to minify our source code.
Skins
CKEditor skin files consist of a set of CSS, JavaScript, and graphic files, grouped for each skin inside the skins
folder.
Other than the JavaScript files minification, there is a particular processing procedure that needs to be performed on the skin files. All @import
directives found in the files must be replaced with the effective contents of the imported files, and those imported files are not to be released.
For example, the release of the default
skin should end up with only two CSS files: editor.css
and dialog.css
. The former is actually a combination of reset.css
, mainui.css
, toolbar.css
and elementspath.css
, which are not released directly.
Directives
CKReleaser makes a "file by file" copy from the source to the target. As part of this task, it searches for special character combinations (directives) in text files and processes them accordingly.
The following list contains the directives that can be processed:
-
%VERSION%
– theversion
string passed to the CKReleaser execution command. -
%TIMESTAMP%
– a four-character string with the concatenation of the "Base 36" value of each of the following components of the program execution date and time: year + month + day + hour. -
%REMOVE_LINE%
– removes the line. -
%REMOVE_START%
and%REMOVE_END%
– removes all lines starting from%REMOVE_START%
and ending with%REMOVE_END%
, declaration line inclusive.