@@ -7,48 +7,55 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'
77import ts from '@rollup/plugin-typescript'
88import { terser } from 'rollup-plugin-terser'
99import typescript from 'typescript'
10+ import * as pkg from './package.json'
1011
1112const input = [ 'src/index.tsx' ]
1213
1314const name = 'ReactTooltip'
1415
15- const external = [ 'react' , 'react-dom' , 'prop-types' ]
16-
17- const globals = {
18- react : 'React' ,
19- 'react-dom' : 'ReactDOM' ,
20- classnames : 'classNames' ,
21- 'prop-types' : 'PropTypes' ,
22- }
16+ const external = [
17+ ...Object . keys ( pkg . peerDependencies ?? { } ) ,
18+ ...Object . keys ( pkg . dependencies ?? { } ) ,
19+ ]
2320
2421const buildFormats = [
2522 {
2623 file : 'dist/react-tooltip.umd.js' ,
2724 format : 'umd' ,
25+ globals : {
26+ '@floating-ui/dom' : 'FloatingUIDOM' ,
27+ react : 'React' ,
28+ 'react-dom' : 'ReactDOM' ,
29+ classnames : 'classNames' ,
30+ 'prop-types' : 'PropTypes' ,
31+ } ,
2832 } ,
2933 {
30- file : 'dist/react-tooltip.cjs.js ' ,
34+ file : 'dist/react-tooltip.cjs' ,
3135 format : 'cjs' ,
3236 } ,
3337 {
34- file : 'dist/react-tooltip.esm.js ' ,
38+ file : 'dist/react-tooltip.mjs ' ,
3539 format : 'es' ,
3640 } ,
3741]
3842
39- // splitted to be reusable by minified css build and unminified css
40- const pluginsBeforePostCSS = [
43+ const sharedPlugins = [
4144 progress ( ) ,
4245 replace ( {
4346 preventAssignment : true ,
4447 values : {
4548 'process.env.NODE_ENV' : JSON . stringify ( 'development' ) ,
4649 } ,
4750 } ) ,
48- ]
49-
50- // splitted to be reusable by minified css build and unminified css
51- const pluginsAfterPostCSS = [
51+ postcss ( {
52+ extract : 'react-tooltip.min.css' , // this will generate a specific file and override on multiples build, but the css will be the same
53+ autoModules : true ,
54+ include : '**/*.css' ,
55+ extensions : [ '.css' ] ,
56+ plugins : [ ] ,
57+ minimize : true ,
58+ } ) ,
5259 nodeResolve ( ) ,
5360 ts ( {
5461 typescript,
@@ -61,58 +68,24 @@ const pluginsAfterPostCSS = [
6168 include : 'node_modules/**' ,
6269 } ) ,
6370]
64-
65- const plugins = [
66- ...pluginsBeforePostCSS ,
67- postcss ( {
68- // extract: true, // this will generate a css file based on output file name
69- extract : 'react-tooltip.css' , // this will generate a specific file and override on multiples build, but the css will be the same
70- autoModules : true ,
71- include : '**/*.css' ,
72- extensions : [ '.css' ] ,
73- plugins : [ ] ,
74- } ) ,
75- ...pluginsAfterPostCSS ,
76- ]
77-
78- const pluginsForCSSMinification = [
79- ...pluginsBeforePostCSS ,
80- postcss ( {
81- extract : 'react-tooltip.min.css' , // this will generate a specific file and override on multiples build, but the css will be the same
82- autoModules : true ,
83- include : '**/*.css' ,
84- extensions : [ '.css' ] ,
85- plugins : [ ] ,
86- minimize : true ,
87- } ) ,
88- ...pluginsAfterPostCSS ,
89- ]
90-
91- const defaultOutputData = buildFormats . map ( ( { file, format } ) => ( {
92- file,
93- format,
94- plugins : [ ...plugins , filesize ( ) ] ,
95- } ) )
96-
9771// this step is just to build the minified css and es modules javascript
98- const minifiedOutputData = buildFormats . map ( ( { file, format } ) => ( {
99- file : file . replace ( '.js' , '.min.js ' ) ,
100- format ,
101- plugins : [ ... pluginsForCSSMinification , terser ( ) , filesize ( ) ] ,
72+ const minifiedBuildFormats = buildFormats . map ( ( { file, ... rest } ) => ( {
73+ file : file . replace ( / ( \. [ c m ] ? j s ) $ / , '.min$1 ' ) ,
74+ ... rest ,
75+ plugins : [ terser ( ) , filesize ( ) ] ,
10276} ) )
10377
104- const outputData = [ ...defaultOutputData , ...minifiedOutputData ]
78+ const allBuildFormats = [ ...buildFormats , ...minifiedBuildFormats ]
10579
106- const config = outputData . map ( ( { file , format , plugins : specificPLugins } ) => ( {
80+ const config = {
10781 input,
108- output : {
109- file,
110- format,
82+ output : allBuildFormats . map ( ( buildFormat ) => ( {
11183 name,
112- globals,
113- } ,
84+ ...buildFormat ,
85+ sourcemap : true ,
86+ } ) ) ,
11487 external,
115- plugins : specificPLugins ,
116- } ) )
88+ plugins : sharedPlugins ,
89+ }
11790
11891export default config
0 commit comments