-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrollup.config.ts
65 lines (59 loc) · 1.59 KB
/
rollup.config.ts
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
import path from 'path';
import { defineConfig } from 'rollup';
import { swc } from 'rollup-plugin-swc3';
import dts from 'rollup-plugin-dts';
import pkgJson from './package.json';
import { builtinModules } from 'module';
const externalModules = Object.keys(pkgJson.dependencies).concat(Object.keys(pkgJson.peerDependencies)).concat(builtinModules).concat('next');
const external = (id: string) => externalModules.some((name) => id === name || id.startsWith(`${name}/`));
const buildMatrix = (inputName: string) => {
const baseName = path.basename(inputName, path.extname(inputName));
return defineConfig([
{
input: `src/${inputName}`,
output: [
{
file: `dist/${baseName}.js`,
format: 'commonjs'
},
{
file: `dist/${baseName}.cjs`,
format: 'commonjs'
},
{
file: `dist/${baseName}.mjs`,
format: 'esm'
},
{
file: `dist/${baseName}.m.js`,
format: 'esm'
}
],
plugins: [swc({
jsc: {
target: 'es2018',
minify: {
compress: { passes: 3 },
mangle: {},
module: true,
keep_fnames: false
}
},
minify: true
})],
external
},
{
input: `src/${inputName}`,
output: {
file: `dist/${baseName}.d.ts`
},
// @ts-expect-error -- rollup-plugin-dts type is completely bullshit
plugins: [dts.default()]
}
]);
};
export default defineConfig([
...buildMatrix('index.ts'),
...buildMatrix('next.ts')
]);