-
Notifications
You must be signed in to change notification settings - Fork 75
/
Copy pathrollup.config.js
119 lines (110 loc) · 2.88 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
// @flow
/* eslint-disable import/no-dynamic-require */
import babel from "rollup-plugin-babel";
import commonjs from "rollup-plugin-commonjs";
import globby from "globby";
import pascalCase from "pascal-case";
import resolve from "rollup-plugin-node-resolve";
// $FlowFixMe
const pkg = require(`${process.cwd()}/package.json`);
const dirs = {
input: "src",
output: "dist",
compat: "compat"
};
const plugins = {
babel: babel({
configFile: "../../.babelrc",
exclude: ["node_modules/**", "../../node_modules/**"],
runtimeHelpers: true
}),
commonjs: commonjs({
namedExports: {
"apollo-utilities": [
"addTypenameToDocument",
"argumentsObjectFromField",
"assign",
"checkDocument",
"cloneDeep",
"createFragmentMap",
"flattenSelections",
"getDefaultValues",
"getDirectiveInfoFromField",
"getDirectiveNames",
"getEnv",
"getFragmentDefinition",
"getFragmentDefinitions",
"getFragmentQueryDocument",
"getMainDefinition",
"getMutationDefinition",
"getOperationDefinition",
"getOperationDefinitionOrDie",
"getOperationName",
"getQueryDefinition",
"getStoreKeyName",
"graphQLResultHasError",
"hasDirectives",
"isDevelopment",
"isEnv",
"isEqual",
"isField",
"isIdValue",
"isInlineFragment",
"isJsonValue",
"isNumberValue",
"isProduction",
"isScalarValue",
"isTest",
"maybeDeepFreeze",
"removeConnectionDirectiveFromDocument",
"removeDirectivesFromDocument",
"resultKeyNameFromField",
"shouldInclude",
"storeKeyNameFromField",
"toIdValue",
"tryFunctionOrLogError",
"valueFromNode",
"valueToObjectRepresentation",
"variablesInOperation",
"warnOnceInDevelopment"
],
phoenix: ["Ajax", "Channel", "LongPoll", "Presence", "Socket"]
}
}),
resolve: resolve()
};
const getCjsAndEsConfig = fileName => ({
input: `${dirs.input}/${fileName}`,
output: [
{
file: `${dirs.output}/${fileName}`,
format: "es",
sourcemap: true
},
{
file: `${dirs.compat}/cjs/${fileName}`,
format: "cjs",
sourcemap: true
}
],
plugins: [plugins.babel]
});
const sources = globby.sync("**/*js", {cwd: dirs.input});
// eslint-disable-next-line no-unused-vars
const getUnscopedName = pkg => {
const [scope, name] = pkg.name.split("/");
return pascalCase(scope) + pascalCase(name);
};
export default [
{
input: `${dirs.input}/index.js`,
output: {
file: `${dirs.compat}/umd/index.js`,
format: "umd",
name: pascalCase(getUnscopedName(pkg)),
sourcemap: true
},
plugins: [plugins.babel, plugins.resolve, plugins.commonjs]
},
...sources.map(getCjsAndEsConfig)
];