-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrollup.config.js
75 lines (67 loc) · 1.72 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
import { resolve } from 'path';
import { outputFileSync } from 'fs-extra';
import { plugin as analyzer } from 'rollup-plugin-analyzer';
import common from 'rollup-plugin-commonjs';
import babel from 'rollup-plugin-babel';
import nodeResolve from 'rollup-plugin-node-resolve';
import { terser } from 'rollup-plugin-terser';
outputFileSync(
resolve(process.cwd(), 'lib/browser/index.js'),
`
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./production.min.js');
} else {
module.exports = require('./development.js');
}
`
);
function getKeys(dependencies = []) {
return Object.keys(dependencies);
}
const packageJson = require('./package.json'); // eslint-disable-line import/no-dynamic-require
const peerDependencies = getKeys(packageJson.peerDependencies);
const externalModuleNames = [...peerDependencies];
function external(id) {
return externalModuleNames.some(name => id.startsWith(name));
}
const defaultBabelOptions = {
configFile: './babel.config.js',
runtimeHelpers: true
};
const defaultPlugins = [
nodeResolve({
extensions: ['.js', '.jsx'],
modulesOnly: true
}),
common(),
babel(defaultBabelOptions)
];
function writeTo(analysisString) {
outputFileSync(
resolve(process.cwd(), 'lib/browser/production.analysis.txt'),
analysisString
);
}
export default [
{
input: 'src/index.js',
output: {
file: 'lib/browser/development.js',
format: 'esm',
sourcemap: true
},
external,
plugins: defaultPlugins
},
{
input: 'src/index.js',
output: {
file: 'lib/browser/production.min.js',
format: 'esm',
sourcemap: true
},
external,
plugins: [...defaultPlugins, terser(), analyzer({ writeTo })]
}
];