83 lines
2.0 KiB
JavaScript
83 lines
2.0 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-typescript';
|
|
|
|
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);
|
|
}
|
|
};
|
|
|
|
const defineEsmConfig = (format) =>
|
|
defineConfig({
|
|
input: pkg.source,
|
|
output: {
|
|
file: format === 'js' ? pkg.module : pkg.module.replace('.js', '.mjs'),
|
|
format: 'esm',
|
|
banner: pkg.rollup?.vanilla ? undefined : '"use client"',
|
|
},
|
|
onwarn,
|
|
plugins: [
|
|
peerDepsExternal({
|
|
includeDependencies: true,
|
|
}),
|
|
...defaultPlugins,
|
|
typescript(),
|
|
],
|
|
});
|
|
|
|
const reactGlobals = {
|
|
react: 'React',
|
|
'react-dom': 'ReactDOM',
|
|
'react/jsx-runtime': 'jsxRuntime',
|
|
};
|
|
|
|
const globals = {
|
|
...(pkg.rollup?.vanilla ? {} : reactGlobals),
|
|
...(pkg.rollup?.globals || {}),
|
|
};
|
|
|
|
const esmMjsConfig = defineEsmConfig('mjs');
|
|
const esmJsConfig = defineEsmConfig('js');
|
|
|
|
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(),
|
|
replace({
|
|
preventAssignment: true,
|
|
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
|
|
}),
|
|
terser(),
|
|
],
|
|
});
|
|
|
|
export default isProd ? [esmMjsConfig, esmJsConfig, umdConfig] : esmMjsConfig;
|