]>
Commit | Line | Data |
---|---|---|
6cae7b58 SR |
1 | // writes helpers require for vnc.html (they should output app.js) |
2 | var fs = require('fs'); | |
3 | var fse = require('fs-extra'); | |
4 | var path = require('path'); | |
5 | ||
21633268 PO |
6 | // util.promisify requires Node.js 8.x, so we have our own |
7 | function 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 | ||
20 | const writeFile = promisify(fs.writeFile); | |
21 | ||
6cae7b58 SR |
22 | module.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 | } |