2
0

buildMath.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. const fs = require("fs");
  2. const { build } = require("esbuild");
  3. const browserConfig = {
  4. entryPoints: ["index.ts"],
  5. bundle: true,
  6. format: "esm",
  7. };
  8. // Will be used later for treeshaking
  9. // function getFiles(dir, files = []) {
  10. // const fileList = fs.readdirSync(dir);
  11. // for (const file of fileList) {
  12. // const name = `${dir}/${file}`;
  13. // if (
  14. // name.includes("node_modules") ||
  15. // name.includes("config") ||
  16. // name.includes("package.json") ||
  17. // name.includes("main.js") ||
  18. // name.includes("index-node.ts") ||
  19. // name.endsWith(".d.ts") ||
  20. // name.endsWith(".md")
  21. // ) {
  22. // continue;
  23. // }
  24. // if (fs.statSync(name).isDirectory()) {
  25. // getFiles(name, files);
  26. // } else if (
  27. // name.match(/\.(sa|sc|c)ss$/) ||
  28. // name.match(/\.(woff|woff2|eot|ttf|otf)$/) ||
  29. // name.match(/locales\/[^/]+\.json$/)
  30. // ) {
  31. // continue;
  32. // } else {
  33. // files.push(name);
  34. // }
  35. // }
  36. // return files;
  37. // }
  38. const createESMBrowserBuild = async () => {
  39. // Development unminified build with source maps
  40. const browserDev = await build({
  41. ...browserConfig,
  42. outdir: "dist/browser/dev",
  43. sourcemap: true,
  44. metafile: true,
  45. define: {
  46. "import.meta.env": JSON.stringify({ DEV: true }),
  47. },
  48. });
  49. fs.writeFileSync(
  50. "meta-browser-dev.json",
  51. JSON.stringify(browserDev.metafile),
  52. );
  53. // production minified build without sourcemaps
  54. const browserProd = await build({
  55. ...browserConfig,
  56. outdir: "dist/browser/prod",
  57. minify: true,
  58. metafile: true,
  59. define: {
  60. "import.meta.env": JSON.stringify({ PROD: true }),
  61. },
  62. });
  63. fs.writeFileSync(
  64. "meta-browser-prod.json",
  65. JSON.stringify(browserProd.metafile),
  66. );
  67. };
  68. const rawConfig = {
  69. entryPoints: ["index.ts"],
  70. bundle: true,
  71. format: "esm",
  72. packages: "external",
  73. };
  74. const createESMRawBuild = async () => {
  75. // Development unminified build with source maps
  76. const rawDev = await build({
  77. ...rawConfig,
  78. outdir: "dist/dev",
  79. sourcemap: true,
  80. metafile: true,
  81. define: {
  82. "import.meta.env": JSON.stringify({ DEV: true }),
  83. },
  84. });
  85. fs.writeFileSync("meta-raw-dev.json", JSON.stringify(rawDev.metafile));
  86. // production minified build without sourcemaps
  87. const rawProd = await build({
  88. ...rawConfig,
  89. outdir: "dist/prod",
  90. minify: true,
  91. metafile: true,
  92. define: {
  93. "import.meta.env": JSON.stringify({ PROD: true }),
  94. },
  95. });
  96. fs.writeFileSync("meta-raw-prod.json", JSON.stringify(rawProd.metafile));
  97. };
  98. createESMRawBuild();
  99. createESMBrowserBuild();