50 lines
1.5 KiB
JavaScript
50 lines
1.5 KiB
JavaScript
import path from 'path'
|
|
import babel from '@rollup/plugin-babel'
|
|
import resolve from '@rollup/plugin-node-resolve'
|
|
|
|
const root = process.platform === 'win32' ? path.resolve('/') : '/'
|
|
const external = (id) => !id.startsWith('.') && !id.startsWith(root)
|
|
const extensions = ['.js', '.jsx', '.ts', '.tsx', '.json']
|
|
|
|
const getBabelOptions = ({ useESModules }) => ({
|
|
babelrc: false,
|
|
extensions,
|
|
exclude: '**/node_modules/**',
|
|
babelHelpers: 'runtime',
|
|
presets: [
|
|
[
|
|
'@babel/preset-env',
|
|
{
|
|
include: [
|
|
'@babel/plugin-proposal-optional-chaining',
|
|
'@babel/plugin-proposal-nullish-coalescing-operator',
|
|
'@babel/plugin-proposal-numeric-separator',
|
|
'@babel/plugin-proposal-logical-assignment-operators',
|
|
],
|
|
bugfixes: true,
|
|
loose: true,
|
|
modules: false,
|
|
targets: '> 1%, not dead, not ie 11, not op_mini all',
|
|
},
|
|
],
|
|
'@babel/preset-react',
|
|
'@babel/preset-typescript',
|
|
],
|
|
plugins: [['@babel/transform-runtime', { regenerator: false, useESModules }]],
|
|
})
|
|
|
|
export default [
|
|
{
|
|
input: `./src/index.tsx`,
|
|
output: { file: `dist/index.js`, format: 'esm' },
|
|
external,
|
|
plugins: [babel(getBabelOptions({ useESModules: true })), resolve({ extensions })],
|
|
},
|
|
{
|
|
input: `./src/index.tsx`,
|
|
output: { file: `dist/index.cjs.js`, format: 'cjs' },
|
|
external,
|
|
plugins: [babel(getBabelOptions({ useESModules: false })), resolve({ extensions })],
|
|
},
|
|
]
|