forked from miragejs/miragejs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
rollup.config.js
125 lines (113 loc) · 2.59 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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import path from "path";
import babel from "@rollup/plugin-babel";
import nodeResolve from "@rollup/plugin-node-resolve";
import commonjs from "rollup-plugin-commonjs";
import alias from "rollup-plugin-alias";
let aliases = {
entries: [
{
find: /@lib(.*)/,
replacement: path.resolve(process.cwd(), "./lib$1.js"),
},
],
};
function isExternal(id) {
/*
Here, `id` is "./db", as in
import db from './db'
*/
let isRelativeInternalModulePath = id.startsWith(".");
/*
Here, `id` is something like
"/Users/samselikoff/Projects/oss/miragejs/miragejs/lib/identity-manager.js"
I'm not sure how this happens, but it's referencing an internal module, so
it shouldn't be treated as external.
*/
let isAbsoluteInternalModulePath = id.includes(
path.join(process.cwd(), "lib")
);
/*
Here, `id` is something like '@lib/assert', which is not a path but does
reference an internal module. So it shouldn't be treated as external.
*/
let isAlias = Boolean(
aliases.entries.find((entry) => {
if (entry.find instanceof RegExp) {
return entry.find.test(id);
} else if (typeof entry.find === "string") {
return id.startsWith(entry.find);
}
})
);
return (
!isRelativeInternalModulePath && !isAbsoluteInternalModulePath && !isAlias
);
}
let esm = {
input: "lib/index.js",
output: { file: `dist/mirage-esm.js`, sourcemap: true, format: "esm" },
external: isExternal,
plugins: [
alias(aliases),
babel({
exclude: "node_modules/**",
sourceMaps: true,
presets: [["@babel/preset-env", {}]],
}),
],
};
let cjs = {
input: "lib/index.js",
output: {
file: `dist/mirage-cjs.js`,
sourcemap: true,
format: "cjs",
esModule: true,
},
external: isExternal,
plugins: [
alias(aliases),
babel({
exclude: "node_modules/**",
sourceMaps: true,
presets: [
[
"@babel/preset-env",
{
targets: { node: "current" },
},
],
],
}),
nodeResolve(),
],
};
let umd = {
input: "lib/index.js",
output: {
file: "dist/mirage-umd.js",
format: "umd",
name: "MirageJS.Server",
},
plugins: [
commonjs(),
alias(aliases),
nodeResolve(),
babel({
exclude: "node_modules/**",
sourceMaps: true,
presets: [
[
"@babel/preset-env",
{
useBuiltIns: "usage",
corejs: 3,
modules: false,
targets: "ie 11",
},
],
],
}),
],
};
export default [esm, cjs, umd];