build.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /* eslint-disable */
  2. const fs = require('fs')
  3. const esbuild = require('esbuild')
  4. const { gzip } = require('zlib')
  5. const pkg = require('../package.json')
  6. const { log } = console
  7. async function main() {
  8. if (fs.existsSync('./dist')) {
  9. fs.rmSync('./dist', { recursive: true }, e => {
  10. if (e) {
  11. throw e
  12. }
  13. })
  14. }
  15. try {
  16. esbuild.buildSync({
  17. entryPoints: ['./src/index.ts'],
  18. outdir: 'dist/cjs',
  19. minify: false,
  20. bundle: true,
  21. format: 'cjs',
  22. target: 'es6',
  23. tsconfig: './tsconfig.build.json',
  24. metafile: false,
  25. sourcemap: true,
  26. })
  27. const esmResult = esbuild.buildSync({
  28. entryPoints: ['./src/index.ts'],
  29. outdir: 'dist/esm',
  30. minify: false,
  31. bundle: true,
  32. format: 'esm',
  33. target: 'es6',
  34. tsconfig: './tsconfig.build.json',
  35. metafile: true,
  36. sourcemap: true,
  37. })
  38. const esmSize = Object.values(esmResult.metafile.outputs).reduce(
  39. (acc, { bytes }) => acc + bytes,
  40. 0
  41. )
  42. fs.readFile('./dist/esm/index.js', (_err, data) => {
  43. gzip(data, (_err, result) => {
  44. log(
  45. `✔ ${pkg.name}: Built package. ${(esmSize / 1000).toFixed(2)}kb (${(
  46. result.length / 1000
  47. ).toFixed(2)}kb gzipped)`
  48. )
  49. })
  50. })
  51. } catch (e) {
  52. log(`× ${pkg.name}: Build failed due to an error.`)
  53. log(e)
  54. }
  55. }
  56. main()