-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathrollup.config.mjs
More file actions
102 lines (92 loc) 路 2.24 KB
/
Copy pathrollup.config.mjs
File metadata and controls
102 lines (92 loc) 路 2.24 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
import { defineConfig } from 'rollup';
import typescript from '@rollup/plugin-typescript';
import nodeResolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import json from '@rollup/plugin-json';
import terser from '@rollup/plugin-terser';
import path from 'path';
const isProduction = process.env.NODE_ENV === 'production';
const generateSourceMap = process.env.SOURCE_MAP !== 'false';
const UMD_OUT_DIR = path.resolve('dist');
const ES_OUT_DIR = path.resolve('es');
const CJS_OUT_DIR = path.resolve('lib');
/* global process */
const getPlugins = (outDir) => {
const plugins = [
nodeResolve({
extensions: ['.ts', '.tsx', '.js', '.jsx'],
preferBuiltins: false,
browser: true,
}),
commonjs(),
typescript({
tsconfig: path.resolve('tsconfig.json'),
outDir,
noEmit: true,
importHelpers: true,
rootDir: path.resolve('src'),
}),
json(),
];
return plugins;
};
// create umd bundle
const createUmdConfig = (minify = false) => ({
input: 'src/index.ts',
output: [
{
file: path.resolve(UMD_OUT_DIR, `t8${minify ? '.min' : ''}.js`),
format: 'umd',
name: 'T8',
sourcemap: generateSourceMap,
plugins:
minify && isProduction
? [
terser({
compress: {
drop_console: isProduction,
drop_debugger: isProduction,
},
}),
]
: [],
preserveModules: false,
},
],
plugins: getPlugins(UMD_OUT_DIR),
});
// configs
const configs = [
// es bundle
{
input: 'src/index.ts',
output: [
{
dir: ES_OUT_DIR,
format: 'esm',
sourcemap: generateSourceMap,
preserveModules: true,
},
],
external: [/tslib/, /node_modules/],
plugins: getPlugins(ES_OUT_DIR),
cache: true,
},
// cjs bundle
{
input: 'src/index.ts',
output: [
{
dir: CJS_OUT_DIR,
format: 'cjs',
sourcemap: generateSourceMap,
preserveModules: true,
},
],
external: [/tslib/, /node_modules/],
plugins: getPlugins(CJS_OUT_DIR),
cache: true,
},
createUmdConfig(isProduction),
];
export default defineConfig(configs);