This repository has been archived by the owner on Nov 8, 2022. It is now read-only.
/
thirdparty.js
67 lines (58 loc) · 1.72 KB
/
thirdparty.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
var rollup = require("rollup");
var { nodeResolve } = require("@rollup/plugin-node-resolve");
var rollupCjs = require("@rollup/plugin-commonjs");
var rollupJson = require("@rollup/plugin-json");
var rollupReplace = require("@rollup/plugin-replace");
var { uglify } = require("rollup-plugin-uglify");
var log = require('fancy-log');
var colors = require('ansi-colors');
var libInMemoryCache = {};
var formatUI5Module = (umdCode, mName) => `sap.ui.define("${mName}", function(){
${umdCode}
return window["${mName}"] || this["${mName}"]
})
`;
var rollupTmpConfig = (mAsbPath, mName, minify = false) => {
const plugins = [
nodeResolve({ preferBuiltins: true }),
rollupCjs(),
rollupJson(),
rollupReplace({
'process.env.NODE_ENV': JSON.stringify("production")
})
];
if (minify) {
plugins.push(uglify());
}
return {
input: mAsbPath,
output: {
file: `${mName}.js`,
format: "umd",
exports: 'named'
},
onwarn: function(message) {
log.warn(`[bundle][${mName}]`, colors.yellow(message));
},
plugins
};
};
var resolve = mName => {
return require.resolve(mName);
};
/**
* bundle thirdparty library
* @param {string} mName module name
*/
var bundleModule = async(mName, minify = false) => {
const mCacheName = `${mName}${minify ? "minify" : ""}`;
// if not found cache
if (!libInMemoryCache[mCacheName]) {
const absPath = resolve(mName);
const bundle = await rollup.rollup(rollupTmpConfig(absPath, mName, minify));
const generated = await bundle.generate({ format: "umd", name: mName });
libInMemoryCache[mCacheName] = formatUI5Module(generated.output[0].code, mName);
}
return libInMemoryCache[mCacheName];
};
module.exports = { bundleModule };