1 | const Fs = require('fs');
|
2 | const Util = require('util');
|
3 | const Rollup = require('rollup');
|
4 | const Package = require('./package');
|
5 | const Babel = require('@babel/core');
|
6 |
|
7 |
|
8 | const WriteFile = Util.promisify(Fs.writeFile);
|
9 |
|
10 | const header = `/*
|
11 | Name: ${Package.name}
|
12 | Version: ${Package.version}
|
13 | License: ${Package.license}
|
14 | Author: ${Package.author}
|
15 | Email: ${Package.email}
|
16 | This Source Code Form is subject to the terms of the Mozilla Public
|
17 | License, v. 2.0. If a copy of the MPL was not distributed with this
|
18 | file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
19 | */
|
20 | `;
|
21 |
|
22 | (async function () {
|
23 |
|
24 | const output = process.argv.slice(2)[0];
|
25 |
|
26 | if (!output) return console.error('build output path required');
|
27 |
|
28 | const bundled = await Rollup.rollup({ input: 'src/index.js' });
|
29 |
|
30 | const generated = await bundled.generate({
|
31 | name: 'Oxe',
|
32 | indent: '\t',
|
33 |
|
34 | format: 'umd',
|
35 | treeshake: true
|
36 | });
|
37 |
|
38 | const code = generated.output[0].code;
|
39 |
|
40 | const options = {
|
41 | moduleId: 'Oxe',
|
42 | comments: false,
|
43 | sourceMaps: false,
|
44 | plugins: [
|
45 | [ 'module:fast-async', {
|
46 | spec: true
|
47 | } ]
|
48 | ],
|
49 | presets: [
|
50 | [ '@babel/preset-env', {
|
51 | modules: false,
|
52 | targets: { ie: '11' },
|
53 | exclude: [
|
54 | 'transform-regenerator',
|
55 | 'transform-async-to-generator',
|
56 | 'proposal-async-generator-functions'
|
57 | ]
|
58 | } ]
|
59 | ]
|
60 | };
|
61 |
|
62 | const dev = Babel.transform(code, options);
|
63 |
|
64 | options.minified = true;
|
65 |
|
66 | const dst = Babel.transform(code, options);
|
67 |
|
68 | await Promise.all([
|
69 | await WriteFile(`./${output}/oxe.js`, header + dev.code),
|
70 | await WriteFile(`./${output}/oxe.min.js`, header + dst.code),
|
71 | await WriteFile('./web/assets/oxe.js', header + dev.code)
|
72 | ]);
|
73 |
|
74 | }()).catch(console.error);
|