/
rollup.config.js
71 lines (66 loc) 路 2.27 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
/* eslint-disable */
// npm i -D rollup typescript rollup-plugin-dts rollup-plugin-esbuild
import dts from 'rollup-plugin-dts'
import esbuild from 'rollup-plugin-esbuild'
import pkg from './package.json' assert { type: 'json' }
// ------------------------------------------------------------------------------------------
// Builds
// ------------------------------------------------------------------------------------------
/**
* @param {{ input: string; output: { esm: { types: string; default: string }; cjs: { types: string; default: string } } }} options
*/
function esbuildAndDts(options) {
const { input, output } = options
if (!output.cjs.default.endsWith('.cjs')) throw new Error('output.cjs.default must end with .cjs')
if (!output.esm.default.endsWith('.js')) throw new Error('output.esm.default must end with .js')
if (!output.cjs.types.endsWith('.d.cts')) throw new Error('output.cjs.types must end with .d.cts')
if (!output.esm.types.endsWith('.d.ts')) throw new Error('output.esm.types must end with .d.ts')
return [
{
input,
output: [
{ file: output.esm.default, format: 'esm', generatedCode: { constBindings: true } },
{ file: output.cjs.default, format: 'cjs', generatedCode: { constBindings: true } },
],
plugins: [esbuild({ sourceMap: false, target: 'esnext', loaders: { '.json': 'json' } })],
},
{
input,
output: [
{ file: output.esm.types, format: 'esm', generatedCode: { constBindings: true } },
{ file: output.cjs.types, format: 'cjs', generatedCode: { constBindings: true } },
],
plugins: [dts()],
},
]
}
export default [
...esbuildAndDts({
input: 'src/index.ts',
output: {
esm: pkg.exports['.'].import,
cjs: pkg.exports['.'].require,
},
}),
...esbuildAndDts({
input: 'src/icons/print/index.ts',
output: {
esm: pkg.exports['./print'].import,
cjs: pkg.exports['./print'].require,
},
}),
...esbuildAndDts({
input: 'src/icons/pop/index.ts',
output: {
esm: pkg.exports['./pop'].import,
cjs: pkg.exports['./pop'].require,
},
}),
...esbuildAndDts({
input: 'src/icons/pencil/index.ts',
output: {
esm: pkg.exports['./pencil'].import,
cjs: pkg.exports['./pencil'].require,
},
}),
]