1 | var rollup = require("rollup");
|
2 | var rollupNodeResolve = require("rollup-plugin-node-resolve");
|
3 | var rollupCjs = require("rollup-plugin-commonjs");
|
4 | var rollupJson = require("rollup-plugin-json");
|
5 | var { uglify } = require("rollup-plugin-uglify");
|
6 | var log = require('fancy-log');
|
7 | var colors = require('ansi-colors');
|
8 |
|
9 | var rollupReplace = require("rollup-plugin-replace");
|
10 |
|
11 | var libInMemoryCache = {};
|
12 |
|
13 | var formatUI5Module = (umdCode, mName) => `sap.ui.define("${mName}", function(){
|
14 | ${umdCode}
|
15 | return window["${mName}"] || this["${mName}"]
|
16 | })
|
17 | `;
|
18 |
|
19 | var rollupTmpConfig = (mAsbPath, mName, minify = false) => {
|
20 | const plugins = [
|
21 | rollupNodeResolve({ preferBuiltins: true }),
|
22 | rollupCjs(),
|
23 | rollupJson(),
|
24 | rollupReplace({
|
25 | 'process.env.NODE_ENV': JSON.stringify("production")
|
26 | })
|
27 | ];
|
28 |
|
29 | if (minify) {
|
30 | plugins.push(uglify());
|
31 | }
|
32 |
|
33 | return {
|
34 | input: mAsbPath,
|
35 | output: {
|
36 | file: `${mName}.js`,
|
37 | format: "umd",
|
38 | exports: 'named'
|
39 | },
|
40 | onwarn: function(message) {
|
41 | log.warn(`[bundle][${mName}]`, colors.yellow(message));
|
42 | },
|
43 | plugins
|
44 | };
|
45 | };
|
46 |
|
47 | var resolve = mName => {
|
48 | return require.resolve(mName);
|
49 | };
|
50 |
|
51 |
|
52 |
|
53 |
|
54 |
|
55 | var bundleModule = async(mName, minify = false) => {
|
56 |
|
57 | if (!libInMemoryCache[mName]) {
|
58 | const absPath = resolve(mName);
|
59 | const bundle = await rollup.rollup(rollupTmpConfig(absPath, mName, minify));
|
60 | const generated = await bundle.generate({ format: "umd", name: mName });
|
61 | libInMemoryCache[mName] = formatUI5Module(generated.output[0].code, mName);
|
62 | }
|
63 | return libInMemoryCache[mName];
|
64 | };
|
65 |
|
66 | module.exports = { bundleModule }; |
\ | No newline at end of file |