-
Notifications
You must be signed in to change notification settings - Fork 79
/
rollup.config.js
63 lines (57 loc) · 1.56 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
import babel from "rollup-plugin-babel";
import commonjs from "@rollup/plugin-commonjs";
import json from "@rollup/plugin-json";
import nodeResolve from "@rollup/plugin-node-resolve";
import shebang from "rollup-plugin-add-shebang";
import replace from "@rollup/plugin-replace";
import { terser } from "rollup-plugin-terser";
import pkg from "./package.json";
const extensions = [".js", ".jsx", ".ts", ".tsx"];
const dependencies = [
...Object.keys(pkg.dependencies || {}),
...Object.keys(pkg.peerDependencies || {}),
// Used Node.js built-ins:
"path",
"fs",
];
const removeRelativePath = dep => dep.replace(/^(\.{1,2}\/)+/, "");
const isExternalDependency = id =>
dependencies.map(dep => removeRelativePath(id).startsWith(dep)).some(Boolean);
const defaults = {
external: isExternalDependency,
input: "src/index.ts",
output: { exports: "named", indent: false },
plugins: [
nodeResolve({ extensions }),
replace({ "process.env.NODE_ENV": "'production'" }),
commonjs(),
json(),
babel({ extensions, runtimeHelpers: true }),
],
treeshake: true,
};
export default [
{
// Default CommonJS build.
...defaults,
output: { format: "cjs", file: `lib/${pkg.name}.js` },
plugins: [
...defaults.plugins,
shebang({
include: `lib/${pkg.name}.js`,
}),
],
},
{
// Minified CommonJS build.
...defaults,
output: { format: "cjs", file: `lib/${pkg.name}.min.js` },
plugins: [
...defaults.plugins,
shebang({
include: `lib/${pkg.name}.min.js`,
}),
terser(),
],
},
];