You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

build.js 1.5KB

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. async function main() {
  7. if (fs.existsSync('./dist')) {
  8. fs.rmSync('./dist', { recursive: true }, (e) => {
  9. if (e) {
  10. throw e
  11. }
  12. })
  13. }
  14. try {
  15. esbuild.buildSync({
  16. entryPoints: ['./src/index.ts'],
  17. outdir: 'dist/cjs',
  18. minify: false,
  19. bundle: true,
  20. format: 'cjs',
  21. target: 'es6',
  22. tsconfig: './tsconfig.build.json',
  23. external: Object.keys(pkg.dependencies),
  24. metafile: true,
  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. external: Object.keys(pkg.dependencies),
  36. metafile: true,
  37. sourcemap: true,
  38. })
  39. const esmSize = Object.values(esmResult.metafile.outputs).reduce(
  40. (acc, { bytes }) => acc + bytes,
  41. 0
  42. )
  43. fs.readFile('./dist/esm/index.js', (_err, data) => {
  44. gzip(data, (_err, result) => {
  45. console.log(
  46. `✔ ${pkg.name}: Built package. ${(esmSize / 1000).toFixed(2)}kb (${(
  47. result.length / 1000
  48. ).toFixed(2)}kb minified)`
  49. )
  50. })
  51. })
  52. } catch (e) {
  53. console.log(`× ${pkg.name}: Build failed due to an error.`)
  54. console.log(e)
  55. }
  56. }
  57. main()