1 |
|
2 | import { appframe } from "./package.json";
|
3 |
|
4 |
|
5 | import babel from "rollup-plugin-babel";
|
6 | import minify from "rollup-plugin-babel-minify";
|
7 | import virtual from "rollup-plugin-virtual";
|
8 | import replace from "rollup-plugin-replace";
|
9 |
|
10 | function getConfig(isProd, format) {
|
11 | if (isProd) {
|
12 | process.env.NODE_ENV = "production";
|
13 | }
|
14 |
|
15 | const plugins = [
|
16 | replace({
|
17 | "process.env.NODE_ENV": JSON.stringify("production")
|
18 | }),
|
19 | babel()
|
20 | ];
|
21 |
|
22 | if (isProd) {
|
23 | plugins.push(minify({ comments: false }));
|
24 | }
|
25 |
|
26 | const entries = appframe instanceof Array ? appframe : [appframe];
|
27 |
|
28 | return entries.map(entry => {
|
29 | const fileExt = isProd ? `${format}.min.js` : `${format}.js`;
|
30 | const config = {
|
31 | input: `src/${entry.fileName}.js`,
|
32 | plugins,
|
33 | output: {
|
34 | externals: ["react", "react-dom"],
|
35 | file: `dist/${entry.fileName}.${fileExt}`,
|
36 | format: format === "esm.node" ? "esm" : format,
|
37 | globals: {
|
38 | react: "React",
|
39 | "react-dom": "ReactDOM"
|
40 | },
|
41 | name: entry.libraryName
|
42 | }
|
43 | };
|
44 |
|
45 | if (format !== "esm.node") {
|
46 | config.plugins.push(
|
47 | virtual({
|
48 | "react-dom": `const { ReactDOM } = window; export default ReactDOM;`,
|
49 | react: `const { React } = window;
|
50 | export default React;
|
51 | export const PureComponent = React.PureComponent;
|
52 | export const Component = React.Component;
|
53 | export const useState = React.useState;
|
54 | export const useEffect = React.useEffect;`
|
55 | })
|
56 | );
|
57 | }
|
58 |
|
59 | return config;
|
60 | });
|
61 | }
|
62 |
|
63 | module.exports = commandLineArgs => {
|
64 | const isProd = commandLineArgs.configProd === true;
|
65 |
|
66 | return [
|
67 | ...getConfig(isProd, "esm.node"),
|
68 | ...getConfig(isProd, "esm"),
|
69 | ...getConfig(isProd, "umd")
|
70 | ];
|
71 | };
|