UNPKG

1.84 kBJavaScriptView Raw
1/* eslint-env node */
2import { appframe } from "./package.json";
3
4/* Rollup & plugins */
5import babel from "rollup-plugin-babel";
6import minify from "rollup-plugin-babel-minify";
7import virtual from "rollup-plugin-virtual";
8import replace from "rollup-plugin-replace";
9
10function 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;
50export default React;
51export const PureComponent = React.PureComponent;
52export const Component = React.Component;
53export const useState = React.useState;
54export const useEffect = React.useEffect;`
55 })
56 );
57 }
58
59 return config;
60 });
61}
62
63module.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};