-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathtsup.config.ts
55 lines (51 loc) · 1.25 KB
/
tsup.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
import { defineConfig } from 'tsup'
import {
defaultBundleFormatConfig,
getBundleExtension,
getBundleBanner,
} from '@bassist/node-utils'
import pkg from './package.json'
const externalMapping = {
react: 'React',
'react-dom': 'ReactDOM',
} as const
const external = Object.keys(externalMapping)
export default defineConfig({
entry: ['src/index.ts'],
target: ['es2020'],
format: defaultBundleFormatConfig,
globalName: 'ReactTruncate',
outExtension: (ctx) => getBundleExtension(ctx),
outDir: 'dist',
dts: true,
banner: {
js: getBundleBanner(pkg),
},
bundle: true,
minify: true,
clean: true,
esbuildOptions(options) {
options.external = external
},
// https://esbuild.github.io/plugins/#using-plugins
esbuildPlugins: [
{
name: 'external-plugin',
setup(build) {
build.onResolve(
{
filter: new RegExp(`^(${external.join('|')})$`),
},
(args) => ({
path: args.path,
namespace: 'external',
}),
)
build.onLoad({ filter: /.*/, namespace: 'external' }, (args) => {
const globalVar = externalMapping[args.path]
return { contents: `module.exports=window.${globalVar};` }
})
},
},
],
})