diff options
Diffstat (limited to 'core/scripts/js')
-rw-r--r-- | core/scripts/js/jqueryui-build.js | 46 | ||||
-rw-r--r-- | core/scripts/js/jqueryui-check.js | 23 | ||||
-rw-r--r-- | core/scripts/js/jqueryui-terser.js | 13 |
3 files changed, 82 insertions, 0 deletions
diff --git a/core/scripts/js/jqueryui-build.js b/core/scripts/js/jqueryui-build.js new file mode 100644 index 000000000000..dbdc93d9f569 --- /dev/null +++ b/core/scripts/js/jqueryui-build.js @@ -0,0 +1,46 @@ +/** + * @file + * + * Provides the build:jqueryui command to minify *.js source files. + * + * Run build:jqueryui with --file to only parse a specific file. + * @example <caption>Only process assets/vendor/jquery.ui/ui/widget.js and + * assets/vendor/jquery.ui/ui/plugin.js</caption + * yarn run build:jqueryui --file assets/vendor/jquery.ui/ui/widget.js --file + * assets/vendor/jquery.ui/ui/plugin.js + * @example <caption>Check if all files have been compiled correctly</caption> + * yarn run build:jqueryui --check + * + * @internal This file is part of the core javascript build process and is only + * meant to be used in that context. + */ + +'use strict'; + +const glob = require('glob'); +const argv = require('minimist')(process.argv.slice(2)); +const check = require('./jqueryui-check'); +const minify = require('./jqueryui-terser'); +const log = require('./log'); + +// Match only on jQuery UI .js files. +const fileMatch = './assets/vendor/jquery.ui/**/!(*-min).js'; +const processFiles = (error, filePaths) => { + if (error) { + process.exitCode = 1; + } + // Process all the found files. + let callback = minify; + if (argv.check) { + callback = check; + } + filePaths.forEach(callback); +}; + +if (argv.file) { + processFiles(null, [].concat(argv.file)); +} +else { + glob(fileMatch, {}, processFiles); +} +process.exitCode = 0; diff --git a/core/scripts/js/jqueryui-check.js b/core/scripts/js/jqueryui-check.js new file mode 100644 index 000000000000..b1600ae46ac6 --- /dev/null +++ b/core/scripts/js/jqueryui-check.js @@ -0,0 +1,23 @@ +const chalk = require('chalk'); +const fs = require('fs'); +const log = require('./log'); +const Terser = require('terser'); + +module.exports = filePath => { + log(`'${filePath}' is being checked.`); + // Transform the file. + const file = fs.readFileSync(filePath, 'utf-8'); + const result = Terser.minify(file); + const fileName = filePath.slice(0, -3); + fs.readFile(`${fileName}-min.js`, function read(err, data) { + if (err) { + log(chalk.red(err)); + process.exitCode = 1; + return; + } + if (result.code !== data.toString()) { + log(chalk.red(`'${filePath}' is not updated.`)); + process.exitCode = 1; + } + }); +}; diff --git a/core/scripts/js/jqueryui-terser.js b/core/scripts/js/jqueryui-terser.js new file mode 100644 index 000000000000..26eeb4e1ce81 --- /dev/null +++ b/core/scripts/js/jqueryui-terser.js @@ -0,0 +1,13 @@ +const fs = require('fs'); +const log = require('./log'); +const Terser = require('terser'); + +module.exports = (filePath) => { + log(`'${filePath}' is being processed.`); + // Transform the file. + const file = fs.readFileSync(filePath, 'utf-8'); + const result = Terser.minify(file); + fs.writeFile(`${filePath.slice(0, -3)}-min.js`, result.code, () => { + log(`'${filePath}' is finished.`); + }); +}; |