/* eslint-disable */ const fs = require('fs') const esbuild = require('esbuild') const { gzip } = require('zlib') const pkg = require('../package.json') const { log: jslog } = console async function main() { if (fs.existsSync('./dist')) { fs.rmSync('./dist', { recursive: true }, (e) => { if (e) { throw e } }) } try { esbuild.buildSync({ entryPoints: ['./src/index.ts'], outdir: 'dist/cjs', minify: false, bundle: true, format: 'cjs', target: 'es6', jsxFactory: 'React.createElement', jsxFragment: 'React.Fragment', tsconfig: './tsconfig.json', external: Object.keys(pkg.dependencies).concat(Object.keys(pkg.peerDependencies)), metafile: true, sourcemap: true, define: { 'process.env.NODE_ENV': '"production"', }, }) const esmResult = esbuild.buildSync({ entryPoints: ['./src/index.ts'], outdir: 'dist/esm', minify: false, bundle: true, format: 'esm', target: 'es6', tsconfig: './tsconfig.build.json', jsxFactory: 'React.createElement', jsxFragment: 'React.Fragment', external: Object.keys(pkg.dependencies).concat(Object.keys(pkg.peerDependencies)), metafile: true, sourcemap: true, define: { 'process.env.NODE_ENV': '"production"', }, }) const esmSize = Object.values(esmResult.metafile.outputs).reduce( (acc, { bytes }) => acc + bytes, 0 ) fs.readFile('./dist/esm/index.js', (_err, data) => { gzip(data, (_err, result) => { jslog( `✔ ${pkg.name}: Built pkg. ${(esmSize / 1000).toFixed(2)}kb (${( result.length / 1000 ).toFixed(2)}kb minified)` ) }) }) } catch (e) { jslog(`× ${pkg.name}: Build failed due to an error.`) jslog(e) } } main()