@@ -4,7 +4,9 @@ import replace from '@rollup/plugin-replace';
44import nodeResolve from '@rollup/plugin-node-resolve' ;
55import { terser } from 'rollup-plugin-terser' ;
66import ignore from 'rollup-plugin-ignore' ;
7-
7+ import alias from '@rollup/plugin-alias' ;
8+ import nodePolyfills from 'rollup-plugin-polyfill-node' ;
9+ import commonjs from '@rollup/plugin-commonjs' ;
810import pkg from './package.json' ;
911
1012const cjs = {
@@ -19,6 +21,8 @@ const esm = {
1921const getCJS = override => Object . assign ( { } , cjs , override ) ;
2022const getESM = override => Object . assign ( { } , esm , override ) ;
2123
24+ const input = 'src/index.js' ;
25+
2226const babelConfig = ( { browser } ) => ( {
2327 babelrc : false ,
2428 exclude : 'node_modules/**' ,
@@ -38,79 +42,84 @@ const babelConfig = ({ browser }) => ({
3842 plugins : [ [ '@babel/plugin-transform-runtime' , { version : '^7.16.4' } ] ]
3943} ) ;
4044
41- const configBase = {
42- input : 'src/index.js' ,
43- external : Object . keys ( pkg . dependencies )
44- . map ( dep => ( dep === 'crypto-js' ? 'crypto-js/md5' : dep ) )
45- . concat (
46- '@babel/runtime/helpers/inheritsLoose' ,
47- '@babel/runtime/helpers/assertThisInitialized' ,
48- '@babel/runtime/helpers/createForOfIteratorHelperLoose' ,
49- '@babel/runtime/helpers/extends' ,
50- 'stream' ,
51- 'zlib'
52- ) ,
53- onwarn : ( warning , rollupWarn ) => {
54- if ( warning . code !== 'CIRCULAR_DEPENDENCY' ) {
55- rollupWarn ( warning ) ;
45+ const getExternal = ( { browser } ) => [
46+ ...( Object . keys ( pkg . dependencies )
47+ . filter ( dep => 'crypto-js' !== dep )
48+ . filter ( dep => ! browser || 'vite-compatible-readable-stream' !== dep )
49+ ) ,
50+ 'crypto-js/md5' ,
51+ '@babel/runtime/helpers/inheritsLoose' ,
52+ '@babel/runtime/helpers/assertThisInitialized' ,
53+ '@babel/runtime/helpers/createForOfIteratorHelperLoose' ,
54+ '@babel/runtime/helpers/extends' ,
55+ 'zlib' ,
56+ ...( browser ? [ ] : [ 'fs' ] ) ,
57+ ] ;
58+
59+ const getPlugins = ( { browser, minify = false } ) => [
60+ json ( ) ,
61+ ...( browser ? [
62+ ignore ( [ 'fs' ] ) ,
63+ alias ( {
64+ entries : [
65+ { find : 'stream' , replacement : 'vite-compatible-readable-stream' } ,
66+ { find : 'zlib' , replacement : 'browserify-zlib' } ,
67+ ]
68+ } ) ,
69+ commonjs ( ) ,
70+ nodeResolve ( { browser, preferBuiltins : ! browser } ) ,
71+ nodePolyfills ( { include : [ / n o d e _ m o d u l e s \/ .+ \. j s / , / p d f k i t \/ s r c \/ .* \. j s / ] } ) ,
72+ ] : [
73+ nodeResolve ( { browser, preferBuiltins : ! browser } ) ,
74+ ] ) ,
75+ replace ( {
76+ preventAssignment : true ,
77+ values : {
78+ BROWSER : JSON . stringify ( browser )
5679 }
57- }
58- } ;
80+ } ) ,
81+ babel ( babelConfig ( { browser } ) ) ,
82+ ...( minify ? [ terser ( ) ] : [ ] ) ,
83+ ] ;
5984
60- const serverConfig = Object . assign ( { } , configBase , {
85+ const serverConfig = {
86+ input,
6187 output : [
6288 getESM ( { file : 'lib/pdfkit.es.js' } ) ,
6389 getCJS ( { file : 'lib/pdfkit.cjs.js' } )
6490 ] ,
65- plugins : [
66- json ( ) ,
67- nodeResolve ( ) ,
68- replace ( {
69- preventAssignment : true ,
70- values : {
71- BROWSER : JSON . stringify ( false )
72- }
73- } ) ,
74- babel ( babelConfig ( { browser : false } ) )
75- ] ,
76- external : configBase . external . concat ( [ 'fs' ] )
77- } ) ;
91+ external : getExternal ( { browser : false } ) ,
92+ plugins : getPlugins ( { browser : false } ) ,
93+ } ;
7894
79- const serverProdConfig = Object . assign ( { } , serverConfig , {
95+ const serverProdConfig = {
96+ input,
8097 output : [
8198 getESM ( { file : 'lib/pdfkit.es.min.js' } ) ,
8299 getCJS ( { file : 'lib/pdfkit.cjs.min.js' } )
83100 ] ,
84- plugins : serverConfig . plugins . concat ( terser ( ) )
85- } ) ;
101+ external : getExternal ( { browser : false } ) ,
102+ plugins : getPlugins ( { browser : false , minify : true } ) ,
103+ } ;
86104
87- const browserConfig = Object . assign ( { } , configBase , {
105+ const browserConfig = {
106+ input,
88107 output : [
89108 getESM ( { file : 'lib/pdfkit.browser.es.js' } ) ,
90109 getCJS ( { file : 'lib/pdfkit.browser.cjs.js' } )
91110 ] ,
92- plugins : [
93- ignore ( [ 'fs' ] ) ,
94-
95- json ( ) ,
96- nodeResolve ( ) ,
97-
98- replace ( {
99- preventAssignment : true ,
100- values : {
101- BROWSER : JSON . stringify ( true )
102- }
103- } ) ,
104- babel ( babelConfig ( { browser : true } ) )
105- ]
106- } ) ;
111+ external : getExternal ( { browser : true } ) ,
112+ plugins : getPlugins ( { browser : true } ) ,
113+ } ;
107114
108115const browserProdConfig = Object . assign ( { } , browserConfig , {
116+ input,
109117 output : [
110118 getESM ( { file : 'lib/pdfkit.browser.es.min.js' } ) ,
111119 getCJS ( { file : 'lib/pdfkit.browser.cjs.min.js' } )
112120 ] ,
113- plugins : browserConfig . plugins . concat ( terser ( ) )
121+ external : getExternal ( { browser : true } ) ,
122+ plugins : getPlugins ( { browser : true , minify : true } ) ,
114123} ) ;
115124
116125export default [
0 commit comments