]> git.proxmox.com Git - mirror_novnc.git/blame - utils/use_require_helpers.js
Don't include icons Makefile when packaging
[mirror_novnc.git] / utils / use_require_helpers.js
CommitLineData
6cae7b58
SR
1// writes helpers require for vnc.html (they should output app.js)
2var fs = require('fs');
3var fse = require('fs-extra');
4var path = require('path');
5
21633268
PO
6// util.promisify requires Node.js 8.x, so we have our own
7function promisify(original) {
8 return function () {
9 let obj = this;
10 let args = Array.prototype.slice.call(arguments);
11 return new Promise((resolve, reject) => {
12 original.apply(obj, args.concat((err, value) => {
13 if (err) return reject(err);
14 resolve(value);
15 }));
16 });
17 }
18}
19
20const writeFile = promisify(fs.writeFile);
21
6cae7b58
SR
22module.exports = {
23 'amd': {
24 appWriter: (base_out_path, out_path) => {
25 // setup for requirejs
21633268
PO
26 return writeFile(out_path, 'requirejs(["app/ui"], function (ui) {});')
27 .then(() => {
28 console.log(`Please place RequireJS in ${path.join(base_out_path, 'require.js')}`);
29 return `<script src="require.js" data-main="${path.relative(base_out_path, out_path)}"></script>`;
30 });
6cae7b58 31 },
152c3995 32 noCopyOverride: () => {},
6cae7b58
SR
33 },
34 'commonjs': {
35 optionsOverride: (opts) => {
36 // CommonJS supports properly shifting the default export to work as normal
37 opts.plugins.unshift("add-module-exports");
38 },
39 appWriter: (base_out_path, out_path) => {
40 var browserify = require('browserify');
41 var b = browserify(path.join(base_out_path, 'app/ui.js'), {});
21633268
PO
42 return promisify(b.bundle).call(b)
43 .then((buf) => writeFile(out_path, buf))
44 .then(() => `<script src="${path.relative(base_out_path, out_path)}"></script>`);
6cae7b58 45 },
152c3995 46 noCopyOverride: () => {},
be7b4e88 47 removeModules: true,
6cae7b58
SR
48 },
49 'systemjs': {
50 appWriter: (base_out_path, out_path) => {
21633268
PO
51 return writeFile(out_path, 'SystemJS.import("./app/ui.js");')
52 .then(() => {
53 console.log(`Please place SystemJS in ${path.join(base_out_path, 'system-production.js')}`);
54 return `<script src="vendor/promise.js"></script>
152c3995 55<script src="system-production.js"></script>\n<script src="${path.relative(base_out_path, out_path)}"></script>`;
21633268 56 });
152c3995
SR
57 },
58 noCopyOverride: (paths, no_copy_files) => {
59 no_copy_files.delete(path.join(paths.vendor, 'promise.js'));
6cae7b58
SR
60 },
61 },
62 'umd': {
63 optionsOverride: (opts) => {
64 // umd supports properly shifting the default export to work as normal
65 opts.plugins.unshift("add-module-exports");
66 },
67 },
68}