@@ -10,6 +10,7 @@ const { minify } = require('terser');
10
10
const zlib = require ( 'node:zlib' ) ;
11
11
const { init : initEsmLexer , parse } = require ( 'es-module-lexer' ) ;
12
12
const MagicString = require ( 'magic-string' ) ;
13
+ const { platform } = require ( 'node:os' ) ;
13
14
14
15
/**
15
16
* Transform ESM to CJS using destructured imports
@@ -223,15 +224,15 @@ async function main() {
223
224
compress : {
224
225
...mangleConfig . minify . compress ,
225
226
pure_getters : true ,
226
- hoist_vars : false ,
227
- hoist_funs : false ,
227
+ // For some reason this is needed else
228
+ // the var declarations will come before
229
+ // the imports
230
+ hoist_vars : true ,
228
231
keep_infinity : true ,
229
232
unsafe_proto : true ,
230
- passes : 10 ,
231
- toplevel : true
233
+ passes : 10
232
234
} ,
233
235
mangle : {
234
- toplevel : true ,
235
236
properties : { ...mangleConfig . minify . mangle . properties , reserved }
236
237
} ,
237
238
format : {
@@ -292,12 +293,15 @@ async function main() {
292
293
bundle : true ,
293
294
sourcemap : true ,
294
295
sourcesContent : true ,
296
+ treeShaking : true ,
297
+ platform : 'browser' ,
298
+ jsxSideEffects : false ,
295
299
plugins : [ babelRenamePlugin ( ) ] ,
296
300
target : [ 'es2020' ] ,
297
301
define : { 'process.env.NODE_ENV' : '"production"' }
298
302
} ;
299
303
300
- // Build ESM first
304
+ // @ts -expect-error
301
305
await build ( {
302
306
...shared ,
303
307
format : 'esm' ,
@@ -333,7 +337,7 @@ async function main() {
333
337
params : { [ zlib . constants . BROTLI_PARAM_QUALITY ] : 11 }
334
338
} ) . length ;
335
339
sizeRows . push ( {
336
- pkg : pkg . id ,
340
+ pkg : pkg . id + ( ext === '.mjs' ? ' (esm)' : '(cjs)' ) ,
337
341
file : path . relative ( root , abs ) ,
338
342
raw,
339
343
gz,
@@ -343,9 +347,26 @@ async function main() {
343
347
}
344
348
345
349
console . log ( '\n[build] Artifact sizes (bytes):' ) ;
346
- console . log ( [ 'Package' , 'File' , 'Raw' , 'Gzip' , 'Brotli' ] . join ( '\t' ) ) ;
347
- for ( const row of sizeRows ) {
348
- console . log ( [ row . pkg , row . file , row . raw , row . gz , row . br ] . join ( '\t' ) ) ;
350
+
351
+ const headers = [ 'Package' , 'Raw' , 'Gzip' , 'Brotli' ] ;
352
+ const rows = sizeRows . map ( r => [
353
+ r . pkg ,
354
+ String ( r . raw ) ,
355
+ String ( r . gz ) ,
356
+ String ( r . br )
357
+ ] ) ;
358
+ const colWidths = headers . map ( ( h , i ) =>
359
+ Math . max ( h . length , ...rows . map ( r => r [ i ] . length ) )
360
+ ) ;
361
+
362
+ function pad ( v , i ) {
363
+ const w = colWidths [ i ] ;
364
+ return v + ' ' . repeat ( w - v . length ) ;
365
+ }
366
+
367
+ console . log ( headers . map ( pad ) . join ( ' ' ) ) ;
368
+ for ( const r of rows ) {
369
+ console . log ( r . map ( pad ) . join ( ' ' ) ) ;
349
370
}
350
371
console . log ( '\nDone.' ) ;
351
372
}
0 commit comments