-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathrollup.config.js
101 lines (95 loc) · 2.3 KB
/
rollup.config.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import { readdirSync } from "fs";
import path from "path";
import babel from "rollup-plugin-babel";
import commonjs from "rollup-plugin-commonjs";
import external from "rollup-plugin-peer-deps-external";
import pkg from "./package.json";
import replace from "rollup-plugin-replace";
import resolve from "rollup-plugin-node-resolve";
import { terser } from "rollup-plugin-terser";
import copy from 'rollup-plugin-copy';
const EXTENSIONS = [".ts", ".tsx", ".js", ".jsx", ".json",".png"];
const CODES = [
"THIS_IS_UNDEFINED",
"MISSING_GLOBAL_NAME",
"CIRCULAR_DEPENDENCY"
];
const getChunks = URI =>
readdirSync(path.resolve(URI))
.filter(x => x.includes(".js"))
.reduce(
(a, c) => ({ ...a, [c.replace(".js", "")]: `src/${c}` }),
{}
);
const discardWarning = warning => {
if (CODES.includes(warning.code)) {
return;
}
console.error(warning);
};
const env = process.env.NODE_ENV;
const commonPlugins = () => [
external({
includeDependencies: true
}),
babel({
babelrc: false,
presets: [["@babel/preset-env", { modules: false }], "@babel/preset-react"],
extensions: EXTENSIONS,
exclude: "node_modules/**",
plugins: [["@babel/plugin-transform-runtime"]],
runtimeHelpers: true
}),
commonjs({
include: /node_modules/
}),
replace({ "process.env.NODE_ENV": JSON.stringify(env) }),
resolve({
extensions: EXTENSIONS,
preferBuiltins: true,
dedupe: ["react", "react-dom"]
}),
copy({
targets: [
{ src: `src/assets/images/**`, dest: `dist/assets/images/` }
]
})
];
export default [
{
onwarn: discardWarning,
input: `src/index.js`,
output: {
esModule: false,
file: pkg.unpkg,
format: "umd",
name: pkg.name.replace("-", "").toUpperCase(),
exports: "named",
globals: {
react: "React",
"react-dom": "ReactDOM"
}
},
plugins: [...commonPlugins(), env === "production" && terser()]
},
{
onwarn: discardWarning,
input: getChunks(`src`),
output: [
{
dir: `dist/esm`,
format: "esm",
exports: "named",
sourcemap: true
},
{
dir: `dist/cjs`,
format: "cjs",
exports: "named",
sourcemap: true
}
],
plugins: commonPlugins(),
external: ["react", "react-dom"]
}
];