-
Notifications
You must be signed in to change notification settings - Fork 16
/
rollup.config.es.js
59 lines (55 loc) · 1.53 KB
/
rollup.config.es.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
import commonjs from '@rollup/plugin-commonjs'
import typescript from '@rollup/plugin-typescript'
import { getBabelOutputPlugin } from '@rollup/plugin-babel'
const path = require('path')
const config = require('./src/config.json')
const entries = {
'nutui-biz.es': path.join(__dirname, `./src/packages/nutui.biz.build.ts`),
}
const outputEntries = {}
config.nav.map((item) => {
item.packages.forEach((element) => {
const { name, show, type, exportEmpty } = element
if (show || exportEmpty) {
outputEntries[`./${name.toLowerCase()}`] = `./${name}`
entries[name] = path.join(
__dirname,
`./src/packages/${name.toLowerCase()}/index.ts`
)
}
})
})
export default {
input: entries,
external: (id, parent) =>
/^react/.test(id) ||
/^react\-dom/.test(id) ||
/^classnames/.test(id) ||
/^\@use-gesture/.test(id) ||
/^\@react-spring/.test(id) ||
/^\@bem-react/.test(id) ||
(/^\@\/packages\/\w+$/.test(id) && !!parent),
output: {
format: 'esm',
dir: './dist/esm',
name: '[entryName].js',
paths: (id) => {
return /@\/packages/.test(id)
? `${outputEntries[id.replace('@/packages/', './')]}.js`
: id
},
},
plugins: [
commonjs(),
typescript(),
getBabelOutputPlugin({
presets: ['@babel/preset-env'],
plugins: [
'@babel/plugin-transform-runtime',
'@babel/plugin-proposal-class-properties',
'@babel/plugin-proposal-object-rest-spread',
'@babel/plugin-syntax-dynamic-import',
],
}),
],
}