UNPKG

1.69 kBJavaScriptView Raw
1var rollup = require("rollup");
2var rollupNodeResolve = require("rollup-plugin-node-resolve");
3var rollupCjs = require("rollup-plugin-commonjs");
4var rollupJson = require("rollup-plugin-json");
5var { uglify } = require("rollup-plugin-uglify");
6var log = require('fancy-log');
7var colors = require('ansi-colors');
8
9var rollupReplace = require("rollup-plugin-replace");
10
11var libInMemoryCache = {};
12
13var formatUI5Module = (umdCode, mName) => `sap.ui.define(function(){
14 ${umdCode}
15 return window["${mName}"] || this["${mName}"]
16})
17`;
18
19var 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-thirdparty][${mName}]`, colors.yellow(message));
42 },
43 plugins
44 };
45};
46
47var resolve = mName => {
48 return require.resolve(mName);
49};
50
51/**
52 * bundle thirdparty library
53 * @param {string} mName module name
54 */
55var bundleModule = async(mName, minify = false) => {
56 // if not found cache
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
66module.exports = { bundleModule };
\No newline at end of file