-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrollup.config.js
More file actions
88 lines (77 loc) · 2.31 KB
/
Copy pathrollup.config.js
File metadata and controls
88 lines (77 loc) · 2.31 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
const builtinModules = require("builtin-modules")
const ts = require('typescript')
const typescript = require('rollup-plugin-typescript2')
const dts = require("rollup-plugin-dts").default
const json = require("@rollup/plugin-json")
const fs = require('fs')
const typesDir = './types'
const tsconfigOverride = {
compilerOptions: {
module: "ESNext",
},
}
function readTextFileSync(path) {
return fs.readFileSync(path, "utf-8")
}
function readJsonFileSync(path) {
if (fs.existsSync(path)) {
const json = (readTextFileSync(path) || '').trim()
if (json)
return JSON.parse(json)
}
return undefined
}
function createRollupConfig(externalModules) {
const external_modules = externalModules || []
if (!Array.isArray(external_modules))
throw new Error(`rollup.external_modules is NOT Array`)
const pkg = readJsonFileSync('./package.json')
const external = [
...builtinModules,
...Object.keys(pkg.dependencies || {}),
...external_modules,
]
const dtsInTypes = fs.existsSync(typesDir) ?
fs.readdirSync(typesDir).filter(name => name.endsWith(".d.ts"))
.map(name => `// merge from ${typesDir}/${name}\n${fs.readFileSync(`${typesDir}/${name}`, 'utf8').trim()}`)
.join('\n\n') + '\n\n// generate by rollup-plugin-dts\n'
: ''
return [
{
input: './src/index.ts',
external,
plugins: [
typescript({
tsconfigOverride: tsconfigOverride,
})
],
output: [
{file: pkg.main, format: 'cjs'},
{file: pkg.module, format: 'es'}
]
},
{
input: './src/index.ts',
external,
plugins: [
{
name: 'merge .d.ts files',
renderChunk(code) {
return dtsInTypes + code
}
},
dts({
compilerOptions: {
module: ts.ModuleKind.ESNext
}
})
],
output: [
{file: pkg.types, format: "es"}
]
}
]
}
const config = createRollupConfig([
])
export default config