-
Notifications
You must be signed in to change notification settings - Fork 0
/
rollup.config.mjs
107 lines (99 loc) · 2.92 KB
/
rollup.config.mjs
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
103
104
105
106
107
/* eslint-disable node/no-unpublished-import */
import { defineConfig } from 'rollup'
import resolve from '@rollup/plugin-node-resolve'
import commonjs from '@rollup/plugin-commonjs'
import json from '@rollup/plugin-json'
import { terser } from 'rollup-plugin-terser'
import replace from 'rollup-plugin-replace'
import license from 'rollup-plugin-license'
// TODO: After importing JSON module become stable, we can import package.json as follows
// JSON module: https://github.com/tc39/proposal-json-modules
// Import Assertions: https://github.com/tc39/proposal-import-assertions
// import pkgJson from "./package.json" assert { type: "json" };
import { createRequire } from 'module'
const pkgJson = createRequire(import.meta.url)('./package.json')
import builtins from 'rollup-plugin-node-builtins'
import globals from 'rollup-plugin-node-globals'
import babel from '@rollup/plugin-babel'
import { ecmaVersionValidator } from 'rollup-plugin-ecma-version-validator'
import fs from 'fs'
const licenseText = fs.readFileSync('LICENSE', 'utf-8')
const licenseTemplate = `
${licenseText}
This bundle includes the following third-party libraries:
<% _.forEach(dependencies, function (dependency) { %>
=====
<%= dependency.name %>@<%= dependency.version %> -- <%= dependency.license %>
-----
<%= dependency.licenseText %>
<% }) %>
`
const extensions = ['.ts', '.js']
const isProd = process.env.BUILD === 'production'
export default defineConfig({
input: './src/index.browser.ts',
output: {
extend: true,
file: `./umd/KintoneRestAPIClient${isProd ? '.min' : ''}.js`,
format: 'umd',
name: 'window',
sourcemap: isProd ? false : 'inline',
},
plugins: [
babel({
babelHelpers: 'bundled',
presets: [
[
'@babel/preset-env',
{
corejs: 3,
useBuiltIns: 'usage',
},
],
'@babel/preset-typescript',
],
extensions,
include: ['src/**/*'],
}),
resolve({
browser: true,
preferBuiltins: false,
}),
commonjs({ extensions }),
babel({
babelHelpers: 'bundled',
presets: [
[
'@babel/preset-env',
{
targets: {
// see kintone's supported browsers https://get.kintone.help/general/en/user/list_start/webbrowser.html
browsers: [
'last 2 edge versions',
'last 2 firefox version',
'last 2 chrome versions',
'last 2 safari versions',
'iOS >= 14',
'last 2 and_chr versions',
],
},
},
],
],
}),
json(),
replace({
PACKAGE_VERSION: JSON.stringify(pkgJson.version),
}),
globals(),
builtins(),
isProd && terser(),
ecmaVersionValidator({ ecmaVersion: 6 }),
license({
banner: {
commentStyle: 'regular',
content: licenseTemplate,
},
}),
],
})