Files
xyflow/tooling/rollup-config/src/index.js
T

78 lines
1.7 KiB
JavaScript

import { readFileSync } from 'fs';
import { resolve } from 'path';
import { cwd } from 'process';
import { defineConfig } from 'rollup';
import resolvePlugin from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import replace from '@rollup/plugin-replace';
import { terser } from 'rollup-plugin-terser';
import peerDepsExternal from 'rollup-plugin-peer-deps-external';
import typescript from 'rollup-plugin-typescript2';
const pkg = JSON.parse(readFileSync(resolve(cwd(), './package.json')));
const isProd = process.env.NODE_ENV === 'production';
const defaultPlugins = [
resolvePlugin(),
commonjs({
include: /node_modules/,
}),
];
const onwarn = (warning, rollupWarn) => {
if (warning.code !== 'CIRCULAR_DEPENDENCY') {
rollupWarn(warning);
}
};
export const esmConfig = defineConfig({
input: pkg.source,
output: {
file: pkg.module,
format: 'esm',
},
onwarn,
plugins: [
peerDepsExternal({
includeDependencies: true,
}),
...defaultPlugins,
typescript({
clean: true,
}),
],
});
const globals = {
react: 'React',
'react-dom': 'ReactDOM',
'react/jsx-runtime': 'jsxRuntime',
...(pkg.rollup?.globals || {}),
};
export const umdConfig = defineConfig({
input: pkg.source,
output: {
file: pkg.main,
format: 'umd',
exports: 'named',
name: pkg.rollup?.name || 'ReactFlow',
globals,
},
onwarn,
plugins: [
peerDepsExternal(),
...defaultPlugins,
typescript({
clean: true,
}),
replace({
preventAssignment: true,
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
}),
terser(),
],
});
export default isProd ? [esmConfig, umdConfig] : esmConfig;