-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrollup.config.mjs
99 lines (85 loc) · 2.66 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
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import typescript from '@rollup/plugin-typescript';
import postcss from '@carbonorm/rollup-plugin-postcss';
import includePaths from 'rollup-plugin-includepaths';
import simpleVars from 'postcss-simple-vars';
import nested from 'postcss-nested';
import autoprefixer from 'autoprefixer';
import {readFileSync} from "fs";
import nodeResolve from "@rollup/plugin-node-resolve";
const pkg = JSON.parse(readFileSync('package.json', {encoding: 'utf8'}));
const config = JSON.parse(readFileSync('tsconfig.json', {encoding: 'utf8'}));
// @link https://stackoverflow.com/questions/63128597/how-to-get-rid-of-the-rollup-plugin-typescript-rollup-sourcemap-option-must
//const production = !process.env.ROLLUP_WATCH;
const plugins = [
commonjs({
namedExports: {
// This is needed because react/jsx-runtime exports jsx on the module export.
// Without this mapping the transformed import {jsx as _jsx} from 'react/jsx-runtime' will fail.
'react/jsx-runtime': ['jsx', 'jsxs', 'Fragment'],
},
}),
includePaths({
paths: [
config.compilerOptions.baseUrl
]
}),
nodeResolve({
'browser': true,
}),
resolve({
extensions: ['.js', '.jsx', '.ts', '.tsx']
}),
typescript({
sourceMap: true, // !production,
inlineSources: false, // !production
}),
postcss({
sourceMap: true,
plugins: [
autoprefixer(),
simpleVars(),
nested()
],
extensions: ['.css', '.scss'],
extract: true,
modules: {
localsConvention: 'all',
generateScopedName: '[hash:base64:7]',
},
syntax: 'postcss-scss',
use: ['sass'],
})
]
// noinspection JSUnresolvedReference
const externals = [
...Object.keys(pkg.dependencies || {}),
...Object.keys(pkg.devDependencies || {}),
...Object.keys(pkg.peerDependencies || {}),
]
console.log('externals', externals)
const globals = []
externals.forEach((external) => {
globals[external] = external
})
console.log(globals)
export default [
{
input: 'src/index.ts',
external: externals,
plugins: plugins,
output: [
// browser-friendly UMD build
//{name: 'CarbonReact', file: pkg.browser, format: 'umd', globals: globals, sourcemap: true},
// CommonJS (for Node) and ES module (for bundlers) build.
// (We could have three entries in the configuration array
// instead of two, but it's quicker to generate multiple
// builds from a single configuration where possible, using
// an array for the `output` option, where we can specify
// `file` and `format` for each target)
{file: pkg.main, format: 'cjs', globals: globals, sourcemap: true},
{file: pkg.module, format: 'es', globals: globals, sourcemap: true}
]
},
];