-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathrollup.config.js
More file actions
103 lines (100 loc) · 2.38 KB
/
rollup.config.js
File metadata and controls
103 lines (100 loc) · 2.38 KB
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
import resolve from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";
import json from "@rollup/plugin-json";
import polyfillNode from "rollup-plugin-polyfill-node";
import { babel as rollupBabel } from '@rollup/plugin-babel';
import fs from 'fs';
import path from 'path';
const packageJson = JSON.parse(fs.readFileSync(path.resolve('./package.json'), 'utf-8'));
const externalDeps = [
...Object.keys(packageJson.dependencies || {}),
...Object.keys(packageJson.peerDependencies || {})
];
// Node build should treat package deps as external.
const nodeConfig = {
input: [
"src/index.node.js",
"src/utils.js"
],
plugins: [
resolve({
browser: false,
preferBuiltins: true,
exportConditions: ['node', 'default']
}),
json(),
commonjs({
include: [
/node_modules/,
"src/**",
],
transformMixedEsModules: true
}),
],
output: [
{
dir: "build/es",
format: "es",
entryFileNames: "[name].js",
exports: "named"
},
{
dir: "build/commonjs",
entryFileNames: "[name].cjs",
chunkFileNames: "[name]-[hash].cjs",
format: "cjs",
},
],
external: externalDeps,
};
// Browser build should bundle most deps and include node polyfills;
const browserConfig = {
input: [
"src/index.browser.js"
],
plugins: [
polyfillNode(), // provide buffer/stream/process/crypto shims for browser
resolve({
browser: true,
preferBuiltins: false,
exportConditions: ['browser', 'default']
}),
json(),
commonjs({
include: [
/node_modules/,
"src/**",
],
transformMixedEsModules: true
}),
// Transpile problematic node_modules (aes-js) for browser
rollupBabel({
babelHelpers: 'bundled',
babelrc: false,
presets: [
[
'@babel/preset-env',
{
targets: '>0.25%, not dead',
modules: false
}
]
],
include: [
'src/**',
'node_modules/aes-js/**'
]
}),
],
output: [
{
dir: "build/es",
format: "es",
entryFileNames: "[name].js",
exports: "named"
}
],
// keep browser bundle self-contained; do not mark regular deps as external
external: externalDeps //Object.keys(packageJson.peerDependencies || {}),
}
export default [nodeConfig, browserConfig];