-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrollup.config.js
executable file
·85 lines (80 loc) · 2.05 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
76
77
78
79
80
81
82
83
84
85
import nodeResolve from '@rollup/plugin-node-resolve';
import typescript from 'rollup-plugin-typescript2';
import commonjs from '@rollup/plugin-commonjs';
import replace from '@rollup/plugin-replace';
import json from '@rollup/plugin-json';
import { terser } from 'rollup-plugin-terser';
import analyze from 'rollup-plugin-analyzer';
const path = require('path');
const packageJson = require('./package.json');
const { genModules } = require('./scripts/common/genModules');
const srcDir = path.resolve('src');
const emitConfig = (type) => {
return {
input: `${srcDir}/utils/index.ts`,
output: Object.assign(
{},
{
indent: false,
format: type,
sourceMap: true,
exports: 'named',
globals: {
dayjs: 'dayjs',
'lodash-es': 'lodashEs',
},
},
type === 'umd'
? {
file: packageJson.unpkg,
name: packageJson.name,
}
: {
dir: type === 'es' ? 'es' : 'dist/lib',
},
),
external: Object.keys(packageJson.peerDependencies || {}),
plugins: [
nodeResolve({
extensions: ['.ts', '.js'],
}),
json(),
commonjs(),
typescript({
useTsconfigDeclarationDir: true,
tsconfig: 'tsconfig.dist.json',
compilerOptions: {
declaration: type !== 'umd',
},
}),
replace({
'process.env.NODE_ENV': JSON.stringify('production'),
}),
analyze({
summaryOnly: true,
}),
].concat(
type === 'umd'
? [
terser({
compress: {
pure_getters: true,
unsafe: true,
unsafe_comps: true,
warnings: false,
},
}),
]
: [],
),
};
};
//
const inputor = genModules(path.join(srcDir, './utils/index.ts'));
export default ['es', 'cjs', 'umd'].map((item) => {
const config = emitConfig(item);
if (item === 'es' || item === 'cjs') {
config.input = inputor;
}
return config;
});