summaryrefslogtreecommitdiffstatshomepage
path: root/core/scripts/js
diff options
context:
space:
mode:
Diffstat (limited to 'core/scripts/js')
-rw-r--r--core/scripts/js/jqueryui-build.js46
-rw-r--r--core/scripts/js/jqueryui-check.js23
-rw-r--r--core/scripts/js/jqueryui-terser.js13
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.`);
+ });
+};