-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrollup.config.ts
More file actions
84 lines (73 loc) · 2.14 KB
/
rollup.config.ts
File metadata and controls
84 lines (73 loc) · 2.14 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
import fs from 'fs';
import typescript from 'rollup-plugin-typescript2';
import commonjs from '@rollup/plugin-commonjs';
import resolve from '@rollup/plugin-node-resolve';
import terser from '@rollup/plugin-terser';
import { dts } from 'rollup-plugin-dts';
import license from 'rollup-plugin-license';
import { RollupWatchOptions, OutputOptions, InputPluginOption, OutputPluginOption } from 'rollup';
const read = (file: string) => fs.readFileSync(file, 'utf-8');
const pkg = JSON.parse(read('package.json'));
const dev = pkg.exports['./development'];
const prod = pkg.exports['./production'];
const input = './src/index.ts';
const external = ['http', 'https', 'fs', 'stream'];
const name = 'webRequestQueue';
const banner = read('LICENSE.md');
const outFile = (file: string, format: 'esm' | 'commonjs'): OutputOptions => ({
file,
format,
sourcemap: true,
exports: format === 'esm' ? 'auto' : 'named',
plugins: [license({ banner })],
});
const libraryFile = (file: string, format: 'esm' | 'commonjs', production: boolean): OutputOptions => {
const options = outFile(file, format);
if (production) {
(options?.plugins as OutputPluginOption[]).push(terser())
}
if (format === 'esm') options.name = name;
return options;
}
const libraryEnvironments = (devFile: string, prodFile: string, format: 'esm' | 'commonjs'): RollupWatchOptions => {
const plugins: InputPluginOption[] = [
typescript(),
resolve({ browser: false })
];
if (format === 'commonjs') plugins.push(commonjs());
return {
input,
external,
output: [
libraryFile(devFile, format, false),
libraryFile(prodFile, format, true)
],
plugins,
}
}
const config: RollupWatchOptions[] = [
libraryEnvironments(
dev.import.default,
prod.import.default,
'esm'
),
libraryEnvironments(
dev.require.default,
prod.require.default,
'commonjs'
),
{
input,
external,
output: [
outFile(dev.import.types, 'esm'),
outFile(prod.import.types, 'esm'),
outFile(dev.require.types, 'commonjs'),
outFile(prod.require.types, 'commonjs')
],
plugins: [
dts()
],
}
];
export default config;