From f1cdb7180b9c4e37e4cee3b78a6961753f62c344 Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Wed, 24 Jan 2024 19:15:24 +0000 Subject: [PATCH] chore(esbuild): dedupe esbuild config (#9875) --- buildDefaults.mjs | 73 ++++++++++++++++++ nx.json | 1 + packages/babel-config/build.mjs | 26 +------ packages/babel-config/package.json | 1 - packages/cli-packages/dataMigrate/build.mjs | 76 ++++++------------- .../cli-packages/dataMigrate/package.json | 2 - packages/cli-packages/storybook/build.mjs | 26 +------ packages/cli-packages/storybook/package.json | 8 -- packages/context/.babelrc.js | 1 - packages/context/build.mjs | 28 +------ packages/context/package.json | 8 -- packages/create-redwood-app/package.json | 1 - packages/create-redwood-app/scripts/build.js | 34 +++------ packages/eslint-plugin/build.mjs | 24 +----- packages/eslint-plugin/package.json | 2 - packages/fastify/build.mjs | 20 +---- packages/fastify/package.json | 1 - packages/mailer/core/.babelrc.js | 1 - packages/mailer/core/build.mjs | 28 +------ packages/mailer/core/package.json | 7 -- packages/mailer/handlers/in-memory/build.mjs | 26 +------ .../mailer/handlers/in-memory/package.json | 7 -- packages/mailer/handlers/nodemailer/build.mjs | 26 +------ .../mailer/handlers/nodemailer/package.json | 7 -- packages/mailer/handlers/resend/build.mjs | 26 +------ packages/mailer/handlers/resend/package.json | 7 -- packages/mailer/handlers/studio/build.mjs | 26 +------ packages/mailer/handlers/studio/package.json | 7 -- .../mailer/renderers/mjml-react/build.mjs | 26 +------ .../mailer/renderers/mjml-react/package.json | 7 -- .../mailer/renderers/react-email/build.mjs | 26 +------ .../mailer/renderers/react-email/package.json | 7 -- packages/project-config/build.js | 35 ++++----- packages/project-config/package.json | 1 - packages/realtime/build.mjs | 30 +++----- packages/realtime/package.json | 1 - packages/record/package.json | 5 -- packages/telemetry/package.json | 5 -- packages/tui/build.mjs | 20 +---- packages/tui/package.json | 6 -- packages/web-server/.babelrc.js | 1 - packages/web-server/build.mjs | 24 +----- yarn.lock | 30 -------- 43 files changed, 161 insertions(+), 563 deletions(-) create mode 100644 buildDefaults.mjs delete mode 100644 packages/context/.babelrc.js delete mode 100644 packages/mailer/core/.babelrc.js delete mode 100644 packages/web-server/.babelrc.js diff --git a/buildDefaults.mjs b/buildDefaults.mjs new file mode 100644 index 000000000000..e3dd86aad72f --- /dev/null +++ b/buildDefaults.mjs @@ -0,0 +1,73 @@ +import path from 'node:path' + +import * as esbuild from 'esbuild' +import fg from 'fast-glob' +import fs from 'fs-extra' + +export const defaultBuildOptions = { + outdir: 'dist', + + platform: 'node', + target: ['node20'], + + format: 'cjs', + + logLevel: 'info', + + // For visualizing dist. See: + // - https://esbuild.github.io/api/#metafile + // - https://esbuild.github.io/analyze/ + metafile: true, +} + +export const defaultPatterns = ['./src/**/*.{ts,js}'] +export const defaultIgnorePatterns = ['**/__tests__', '**/*.test.{ts,js}'] + +/** + * @typedef {{ + * cwd?: string + * buildOptions?: import('esbuild').BuildOptions + * entryPointOptions?: { + * patterns?: string[] + * ignore?: string[] + * } + * metafileName?: string + * }} BuildOptions + * + * @param {BuildOptions} options + */ +export async function build({ + cwd, + buildOptions, + entryPointOptions, + metafileName, +} = {}) { + // Yarn and Nx both set this to the package's root dir path + cwd ??= process.cwd() + + buildOptions ??= defaultBuildOptions + metafileName ??= 'meta.json' + + // If the user didn't explicitly provide entryPoints, + // then we'll use fg to find all the files in `${cwd}/src` + let entryPoints = buildOptions.entryPoints + + if (!entryPoints) { + const patterns = entryPointOptions?.patterns ?? defaultPatterns + const ignore = entryPointOptions?.ignore ?? defaultIgnorePatterns + + entryPoints = await fg(patterns, { + cwd, + ignore, + }) + } + + const result = await esbuild.build({ + entryPoints, + ...buildOptions, + }) + + await fs.writeJSON(path.join(cwd, metafileName), result.metafile, { + spaces: 2, + }) +} diff --git a/nx.json b/nx.json index 207455780f38..d06435391a24 100644 --- a/nx.json +++ b/nx.json @@ -10,6 +10,7 @@ "!{projectRoot}/**/*.test.{js,jsx,ts,tsx}", "{workspaceRoot}/babel.config.js", "{workspaceRoot}/tsconfig.json", + "{workspaceRoot}/buildDefaults.mjs", { "runtime": "node -v" }, diff --git a/packages/babel-config/build.mjs b/packages/babel-config/build.mjs index 7f99112baa8e..75e861b63346 100644 --- a/packages/babel-config/build.mjs +++ b/packages/babel-config/build.mjs @@ -1,25 +1,3 @@ -import fs from 'node:fs/promises' +import { build } from '../../buildDefaults.mjs' -import * as esbuild from 'esbuild' -import fg from 'fast-glob' - -const sourceFiles = await fg.glob(['./src/**/*.ts'], { - ignore: ['./src/**/__tests__'], -}) - -const result = await esbuild.build({ - entryPoints: sourceFiles, - outdir: 'dist', - - format: 'cjs', - platform: 'node', - target: ['node20'], - - logLevel: 'info', - - // For visualizing the bundle. - // See https://esbuild.github.io/api/#metafile and https://esbuild.github.io/analyze/. - metafile: true, -}) - -await fs.writeFile('meta.json', JSON.stringify(result.metafile, null, 2)) +await build() diff --git a/packages/babel-config/package.json b/packages/babel-config/package.json index 1b3275eff0f9..018a3999d0cd 100644 --- a/packages/babel-config/package.json +++ b/packages/babel-config/package.json @@ -49,7 +49,6 @@ "@types/babel__core": "7.20.4", "@types/node": "20.10.4", "babel-plugin-tester": "11.0.4", - "esbuild": "0.19.9", "jest": "29.7.0" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/cli-packages/dataMigrate/build.mjs b/packages/cli-packages/dataMigrate/build.mjs index 02fe92e4bb11..a0d3e3a4ac7a 100644 --- a/packages/cli-packages/dataMigrate/build.mjs +++ b/packages/cli-packages/dataMigrate/build.mjs @@ -1,57 +1,27 @@ -import fs from 'node:fs/promises' - -import * as esbuild from 'esbuild' -import fg from 'fast-glob' - -// ─── Package ───────────────────────────────────────────────────────────────── -// -// Types don't need to be transformed by esbuild, and the bin is bundled later. - -const sourceFiles = await fg.glob(['./src/**/*.ts'], { - ignore: ['./src/__tests__', './src/types.ts', './src/bin.ts'], -}) - -let result = await esbuild.build({ - entryPoints: sourceFiles, - outdir: 'dist', - - format: 'cjs', - platform: 'node', - target: ['node20'], - - logLevel: 'info', - - // For visualizing the bundle. - // See https://esbuild.github.io/api/#metafile and https://esbuild.github.io/analyze/. - metafile: true, +import { + build, + defaultBuildOptions, + defaultIgnorePatterns, +} from '../../../buildDefaults.mjs' + +// Build the package. +await build({ + entryPointOptions: { + ignore: [...defaultIgnorePatterns, './src/types.ts', './src/bin.ts'], + }, }) -await fs.writeFile('meta.json', JSON.stringify(result.metafile, null, 2)) - -// ─── Bin ───────────────────────────────────────────────────────────────────── -// -// We build the bin differently because it doesn't have to asynchronously import the handler. - -result = await esbuild.build({ - entryPoints: ['./src/bin.ts'], - outdir: 'dist', - - banner: { - js: '#!/usr/bin/env node', +// Build the bin. +await build({ + buildOptions: { + ...defaultBuildOptions, + banner: { + js: '#!/usr/bin/env node', + }, + bundle: true, + entryPoints: ['./src/bin.ts'], + minify: true, + packages: 'external', }, - - bundle: true, - minify: true, - - platform: 'node', - target: ['node20'], - packages: 'external', - - logLevel: 'info', - - // For visualizing the bundle. - // See https://esbuild.github.io/api/#metafile and https://esbuild.github.io/analyze/. - metafile: true, + metafileName: 'meta.bin.json', }) - -await fs.writeFile('meta.bins.json', JSON.stringify(result.metafile, null, 2)) diff --git a/packages/cli-packages/dataMigrate/package.json b/packages/cli-packages/dataMigrate/package.json index 8011d75494c2..d3e88a2b55f2 100644 --- a/packages/cli-packages/dataMigrate/package.json +++ b/packages/cli-packages/dataMigrate/package.json @@ -39,8 +39,6 @@ "@prisma/client": "5.7.0", "@types/fs-extra": "11.0.4", "@types/yargs": "17.0.32", - "esbuild": "0.19.9", - "fast-glob": "3.3.2", "jest": "29.7.0", "memfs": "4.6.0", "typescript": "5.3.3" diff --git a/packages/cli-packages/storybook/build.mjs b/packages/cli-packages/storybook/build.mjs index f173e7ab9024..14b2d70d4a73 100644 --- a/packages/cli-packages/storybook/build.mjs +++ b/packages/cli-packages/storybook/build.mjs @@ -1,25 +1,3 @@ -import fs from 'node:fs' +import { build } from '../../../buildDefaults.mjs' -import * as esbuild from 'esbuild' -import fg from 'fast-glob' - -// Get source files -const sourceFiles = fg.sync(['./src/**/*.ts']) - -// Build general source files -const result = await esbuild.build({ - entryPoints: sourceFiles, - outdir: 'dist', - - format: 'cjs', - platform: 'node', - target: ['node20'], - - logLevel: 'info', - - // For visualizing dist. - // See https://esbuild.github.io/api/#metafile and https://esbuild.github.io/analyze/. - metafile: true, -}) - -fs.writeFileSync('meta.json', JSON.stringify(result.metafile, null, 2)) +await build() diff --git a/packages/cli-packages/storybook/package.json b/packages/cli-packages/storybook/package.json index 577fa3f4458d..4a3dce4ad0c6 100644 --- a/packages/cli-packages/storybook/package.json +++ b/packages/cli-packages/storybook/package.json @@ -19,11 +19,6 @@ "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", "prepublishOnly": "NODE_ENV=production yarn build" }, - "jest": { - "testPathIgnorePatterns": [ - "/dist/" - ] - }, "dependencies": { "@redwoodjs/cli-helpers": "6.0.7", "@redwoodjs/project-config": "6.0.7", @@ -40,9 +35,6 @@ }, "devDependencies": { "@types/yargs": "17.0.32", - "esbuild": "0.19.9", - "fast-glob": "3.3.2", - "jest": "29.7.0", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/context/.babelrc.js b/packages/context/.babelrc.js deleted file mode 100644 index 3b2c815712d9..000000000000 --- a/packages/context/.babelrc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = { extends: '../../babel.config.js' } diff --git a/packages/context/build.mjs b/packages/context/build.mjs index 95bdb1e83cfb..75e861b63346 100644 --- a/packages/context/build.mjs +++ b/packages/context/build.mjs @@ -1,27 +1,3 @@ -import fs from 'node:fs' +import { build } from '../../buildDefaults.mjs' -import * as esbuild from 'esbuild' -import fg from 'fast-glob' - -// Get source files -const sourceFiles = fg.sync(['./src/**/*.ts'], { - ignore: ['**/*.test.ts'], -}) - -// Build general source files -const result = await esbuild.build({ - entryPoints: sourceFiles, - outdir: 'dist', - - format: 'cjs', - platform: 'node', - target: ['node18'], - - logLevel: 'info', - - // For visualizing dist. - // See https://esbuild.github.io/api/#metafile and https://esbuild.github.io/analyze/. - metafile: true, -}) - -fs.writeFileSync('meta.json', JSON.stringify(result.metafile, null, 2)) +await build() diff --git a/packages/context/package.json b/packages/context/package.json index 7eaba9167f9a..1ddb8e2d1f4d 100644 --- a/packages/context/package.json +++ b/packages/context/package.json @@ -19,15 +19,7 @@ "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", "prepublishOnly": "NODE_ENV=production yarn build" }, - "jest": { - "testPathIgnorePatterns": [ - "/dist/" - ] - }, "devDependencies": { - "esbuild": "0.19.9", - "fast-glob": "3.3.2", - "jest": "29.7.0", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/create-redwood-app/package.json b/packages/create-redwood-app/package.json index 52db9b47ecc9..951c59d2ed98 100644 --- a/packages/create-redwood-app/package.json +++ b/packages/create-redwood-app/package.json @@ -37,7 +37,6 @@ "check-node-version": "4.2.1", "ci-info": "4.0.0", "envinfo": "7.11.0", - "esbuild": "0.19.9", "execa": "5.1.1", "fs-extra": "11.2.0", "jest": "29.7.0", diff --git a/packages/create-redwood-app/scripts/build.js b/packages/create-redwood-app/scripts/build.js index 6694591a9998..6e69287e22fa 100644 --- a/packages/create-redwood-app/scripts/build.js +++ b/packages/create-redwood-app/scripts/build.js @@ -1,7 +1,4 @@ -/* eslint-env node */ - -import * as esbuild from 'esbuild' -import fs from 'fs-extra' +import { build, defaultBuildOptions } from '../../../buildDefaults.mjs' const jsBanner = `\ #!/usr/bin/env node @@ -11,24 +8,15 @@ const __filename = (await import("node:url")).fileURLToPath(import.meta.url); const __dirname = (await import("node:path")).dirname(__filename); ` -const result = await esbuild.build({ - entryPoints: ['src/create-redwood-app.js'], - outdir: 'dist', - - platform: 'node', - target: ['node20'], - format: 'esm', - bundle: true, - banner: { - js: jsBanner, +await build({ + buildOptions: { + ...defaultBuildOptions, + banner: { + js: jsBanner, + }, + bundle: true, + entryPoints: ['src/create-redwood-app.js'], + format: 'esm', + minify: true, }, - - minify: true, - - logLevel: 'info', - metafile: true, -}) - -await fs.writeJSON(new URL('./meta.json', import.meta.url), result.metafile, { - spaces: 2, }) diff --git a/packages/eslint-plugin/build.mjs b/packages/eslint-plugin/build.mjs index 8fac87acabc5..75e861b63346 100644 --- a/packages/eslint-plugin/build.mjs +++ b/packages/eslint-plugin/build.mjs @@ -1,23 +1,3 @@ -import fs from 'node:fs' +import { build } from '../../buildDefaults.mjs' -import * as esbuild from 'esbuild' -import fg from 'fast-glob' - -const sourceFiles = fg.sync(['./src/**/*.ts'], { ignore: ['./src/__tests__'] }) - -const result = await esbuild.build({ - entryPoints: sourceFiles, - outdir: 'dist', - - format: 'cjs', - platform: 'node', - target: ['node20'], - - logLevel: 'info', - - // For visualizing dist. - // See https://esbuild.github.io/api/#metafile and https://esbuild.github.io/analyze/. - metafile: true, -}) - -fs.writeFileSync('meta.json', JSON.stringify(result.metafile, null, 2)) +await build() diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 9e1d5075d155..1f65a702e6fd 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -29,8 +29,6 @@ "@types/eslint": "8", "@types/estree": "1.0.5", "@typescript-eslint/parser": "5.62.0", - "esbuild": "0.19.9", - "fast-glob": "3.3.2", "glob": "10.3.10", "tsx": "4.6.2", "typescript": "5.3.3" diff --git a/packages/fastify/build.mjs b/packages/fastify/build.mjs index 74a3ecf2f5e0..75e861b63346 100644 --- a/packages/fastify/build.mjs +++ b/packages/fastify/build.mjs @@ -1,19 +1,3 @@ -import * as esbuild from 'esbuild' +import { build } from '../../buildDefaults.mjs' -await esbuild.build({ - entryPoints: [ - 'src/api.ts', - 'src/config.ts', - 'src/index.ts', - 'src/types.ts', - 'src/web.ts', - 'src/lambda/index.ts', - ], - outdir: 'dist', - - format: 'cjs', - platform: 'node', - target: ['node20'], - - logLevel: 'info', -}) +await build() diff --git a/packages/fastify/package.json b/packages/fastify/package.json index 0eb6d1619598..d180343d8405 100644 --- a/packages/fastify/package.json +++ b/packages/fastify/package.json @@ -35,7 +35,6 @@ "@types/aws-lambda": "8.10.126", "@types/lodash": "4.14.201", "@types/qs": "6.9.11", - "esbuild": "0.19.9", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/mailer/core/.babelrc.js b/packages/mailer/core/.babelrc.js deleted file mode 100644 index cdc48920e1c2..000000000000 --- a/packages/mailer/core/.babelrc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = { extends: '../../../babel.config.js' } diff --git a/packages/mailer/core/build.mjs b/packages/mailer/core/build.mjs index dd87290560db..14b2d70d4a73 100644 --- a/packages/mailer/core/build.mjs +++ b/packages/mailer/core/build.mjs @@ -1,27 +1,3 @@ -import fs from 'node:fs' +import { build } from '../../../buildDefaults.mjs' -import * as esbuild from 'esbuild' -import fg from 'fast-glob' - -// Get source files -const sourceFiles = fg.sync(['./src/**/*.ts'], { - ignore: ['**/*.test.ts'], -}) - -// Build general source files -const result = await esbuild.build({ - entryPoints: sourceFiles, - outdir: 'dist', - - format: 'cjs', - platform: 'node', - target: ['node20'], - - logLevel: 'info', - - // For visualizing dist. - // See https://esbuild.github.io/api/#metafile and https://esbuild.github.io/analyze/. - metafile: true, -}) - -fs.writeFileSync('meta.json', JSON.stringify(result.metafile, null, 2)) +await build() diff --git a/packages/mailer/core/package.json b/packages/mailer/core/package.json index 8d14ba239da4..58a9a4975b15 100644 --- a/packages/mailer/core/package.json +++ b/packages/mailer/core/package.json @@ -21,15 +21,8 @@ "test": "vitest run src", "test:watch": "vitest watch src" }, - "jest": { - "testPathIgnorePatterns": [ - "/dist/" - ] - }, "devDependencies": { "@redwoodjs/api": "6.0.7", - "esbuild": "0.19.9", - "fast-glob": "3.3.2", "typescript": "5.3.3", "vitest": "1.2.1" }, diff --git a/packages/mailer/handlers/in-memory/build.mjs b/packages/mailer/handlers/in-memory/build.mjs index f173e7ab9024..2a6302021b2a 100644 --- a/packages/mailer/handlers/in-memory/build.mjs +++ b/packages/mailer/handlers/in-memory/build.mjs @@ -1,25 +1,3 @@ -import fs from 'node:fs' +import { build } from '../../../../buildDefaults.mjs' -import * as esbuild from 'esbuild' -import fg from 'fast-glob' - -// Get source files -const sourceFiles = fg.sync(['./src/**/*.ts']) - -// Build general source files -const result = await esbuild.build({ - entryPoints: sourceFiles, - outdir: 'dist', - - format: 'cjs', - platform: 'node', - target: ['node20'], - - logLevel: 'info', - - // For visualizing dist. - // See https://esbuild.github.io/api/#metafile and https://esbuild.github.io/analyze/. - metafile: true, -}) - -fs.writeFileSync('meta.json', JSON.stringify(result.metafile, null, 2)) +await build() diff --git a/packages/mailer/handlers/in-memory/package.json b/packages/mailer/handlers/in-memory/package.json index a43f2f6e16c4..06494f4c6585 100644 --- a/packages/mailer/handlers/in-memory/package.json +++ b/packages/mailer/handlers/in-memory/package.json @@ -19,17 +19,10 @@ "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", "prepublishOnly": "NODE_ENV=production yarn build" }, - "jest": { - "testPathIgnorePatterns": [ - "/dist/" - ] - }, "dependencies": { "@redwoodjs/mailer-core": "6.0.7" }, "devDependencies": { - "esbuild": "0.19.9", - "fast-glob": "3.3.2", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/mailer/handlers/nodemailer/build.mjs b/packages/mailer/handlers/nodemailer/build.mjs index f173e7ab9024..2a6302021b2a 100644 --- a/packages/mailer/handlers/nodemailer/build.mjs +++ b/packages/mailer/handlers/nodemailer/build.mjs @@ -1,25 +1,3 @@ -import fs from 'node:fs' +import { build } from '../../../../buildDefaults.mjs' -import * as esbuild from 'esbuild' -import fg from 'fast-glob' - -// Get source files -const sourceFiles = fg.sync(['./src/**/*.ts']) - -// Build general source files -const result = await esbuild.build({ - entryPoints: sourceFiles, - outdir: 'dist', - - format: 'cjs', - platform: 'node', - target: ['node20'], - - logLevel: 'info', - - // For visualizing dist. - // See https://esbuild.github.io/api/#metafile and https://esbuild.github.io/analyze/. - metafile: true, -}) - -fs.writeFileSync('meta.json', JSON.stringify(result.metafile, null, 2)) +await build() diff --git a/packages/mailer/handlers/nodemailer/package.json b/packages/mailer/handlers/nodemailer/package.json index fb8e6ef0fd04..935881edb622 100644 --- a/packages/mailer/handlers/nodemailer/package.json +++ b/packages/mailer/handlers/nodemailer/package.json @@ -19,19 +19,12 @@ "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", "prepublishOnly": "NODE_ENV=production yarn build" }, - "jest": { - "testPathIgnorePatterns": [ - "/dist/" - ] - }, "dependencies": { "@redwoodjs/mailer-core": "6.0.7", "nodemailer": "6.9.7" }, "devDependencies": { "@types/nodemailer": "^6", - "esbuild": "0.19.9", - "fast-glob": "3.3.2", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/mailer/handlers/resend/build.mjs b/packages/mailer/handlers/resend/build.mjs index f173e7ab9024..2a6302021b2a 100644 --- a/packages/mailer/handlers/resend/build.mjs +++ b/packages/mailer/handlers/resend/build.mjs @@ -1,25 +1,3 @@ -import fs from 'node:fs' +import { build } from '../../../../buildDefaults.mjs' -import * as esbuild from 'esbuild' -import fg from 'fast-glob' - -// Get source files -const sourceFiles = fg.sync(['./src/**/*.ts']) - -// Build general source files -const result = await esbuild.build({ - entryPoints: sourceFiles, - outdir: 'dist', - - format: 'cjs', - platform: 'node', - target: ['node20'], - - logLevel: 'info', - - // For visualizing dist. - // See https://esbuild.github.io/api/#metafile and https://esbuild.github.io/analyze/. - metafile: true, -}) - -fs.writeFileSync('meta.json', JSON.stringify(result.metafile, null, 2)) +await build() diff --git a/packages/mailer/handlers/resend/package.json b/packages/mailer/handlers/resend/package.json index 7102aa3c8fc9..d77df3465cf6 100644 --- a/packages/mailer/handlers/resend/package.json +++ b/packages/mailer/handlers/resend/package.json @@ -19,18 +19,11 @@ "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", "prepublishOnly": "NODE_ENV=production yarn build" }, - "jest": { - "testPathIgnorePatterns": [ - "/dist/" - ] - }, "dependencies": { "@redwoodjs/mailer-core": "6.0.7", "resend": "1.1.0" }, "devDependencies": { - "esbuild": "0.19.9", - "fast-glob": "3.3.2", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/mailer/handlers/studio/build.mjs b/packages/mailer/handlers/studio/build.mjs index f173e7ab9024..2a6302021b2a 100644 --- a/packages/mailer/handlers/studio/build.mjs +++ b/packages/mailer/handlers/studio/build.mjs @@ -1,25 +1,3 @@ -import fs from 'node:fs' +import { build } from '../../../../buildDefaults.mjs' -import * as esbuild from 'esbuild' -import fg from 'fast-glob' - -// Get source files -const sourceFiles = fg.sync(['./src/**/*.ts']) - -// Build general source files -const result = await esbuild.build({ - entryPoints: sourceFiles, - outdir: 'dist', - - format: 'cjs', - platform: 'node', - target: ['node20'], - - logLevel: 'info', - - // For visualizing dist. - // See https://esbuild.github.io/api/#metafile and https://esbuild.github.io/analyze/. - metafile: true, -}) - -fs.writeFileSync('meta.json', JSON.stringify(result.metafile, null, 2)) +await build() diff --git a/packages/mailer/handlers/studio/package.json b/packages/mailer/handlers/studio/package.json index 5054b248e467..149e32d024d1 100644 --- a/packages/mailer/handlers/studio/package.json +++ b/packages/mailer/handlers/studio/package.json @@ -19,19 +19,12 @@ "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", "prepublishOnly": "NODE_ENV=production yarn build" }, - "jest": { - "testPathIgnorePatterns": [ - "/dist/" - ] - }, "dependencies": { "@redwoodjs/mailer-core": "6.0.7", "@redwoodjs/mailer-handler-nodemailer": "6.0.7" }, "devDependencies": { "@types/nodemailer": "^6", - "esbuild": "0.19.9", - "fast-glob": "3.3.2", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/mailer/renderers/mjml-react/build.mjs b/packages/mailer/renderers/mjml-react/build.mjs index f173e7ab9024..2a6302021b2a 100644 --- a/packages/mailer/renderers/mjml-react/build.mjs +++ b/packages/mailer/renderers/mjml-react/build.mjs @@ -1,25 +1,3 @@ -import fs from 'node:fs' +import { build } from '../../../../buildDefaults.mjs' -import * as esbuild from 'esbuild' -import fg from 'fast-glob' - -// Get source files -const sourceFiles = fg.sync(['./src/**/*.ts']) - -// Build general source files -const result = await esbuild.build({ - entryPoints: sourceFiles, - outdir: 'dist', - - format: 'cjs', - platform: 'node', - target: ['node20'], - - logLevel: 'info', - - // For visualizing dist. - // See https://esbuild.github.io/api/#metafile and https://esbuild.github.io/analyze/. - metafile: true, -}) - -fs.writeFileSync('meta.json', JSON.stringify(result.metafile, null, 2)) +await build() diff --git a/packages/mailer/renderers/mjml-react/package.json b/packages/mailer/renderers/mjml-react/package.json index 00c28ffd4f87..278f48e088f7 100644 --- a/packages/mailer/renderers/mjml-react/package.json +++ b/packages/mailer/renderers/mjml-react/package.json @@ -19,11 +19,6 @@ "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", "prepublishOnly": "NODE_ENV=production yarn build" }, - "jest": { - "testPathIgnorePatterns": [ - "/dist/" - ] - }, "dependencies": { "@faire/mjml-react": "3.3.0", "@redwoodjs/mailer-core": "6.0.7", @@ -31,8 +26,6 @@ }, "devDependencies": { "@types/mjml": "4", - "esbuild": "0.19.9", - "fast-glob": "3.3.2", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/mailer/renderers/react-email/build.mjs b/packages/mailer/renderers/react-email/build.mjs index f173e7ab9024..2a6302021b2a 100644 --- a/packages/mailer/renderers/react-email/build.mjs +++ b/packages/mailer/renderers/react-email/build.mjs @@ -1,25 +1,3 @@ -import fs from 'node:fs' +import { build } from '../../../../buildDefaults.mjs' -import * as esbuild from 'esbuild' -import fg from 'fast-glob' - -// Get source files -const sourceFiles = fg.sync(['./src/**/*.ts']) - -// Build general source files -const result = await esbuild.build({ - entryPoints: sourceFiles, - outdir: 'dist', - - format: 'cjs', - platform: 'node', - target: ['node20'], - - logLevel: 'info', - - // For visualizing dist. - // See https://esbuild.github.io/api/#metafile and https://esbuild.github.io/analyze/. - metafile: true, -}) - -fs.writeFileSync('meta.json', JSON.stringify(result.metafile, null, 2)) +await build() diff --git a/packages/mailer/renderers/react-email/package.json b/packages/mailer/renderers/react-email/package.json index a5a07b4f68cd..252724127dee 100644 --- a/packages/mailer/renderers/react-email/package.json +++ b/packages/mailer/renderers/react-email/package.json @@ -19,18 +19,11 @@ "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", "prepublishOnly": "NODE_ENV=production yarn build" }, - "jest": { - "testPathIgnorePatterns": [ - "/dist/" - ] - }, "dependencies": { "@react-email/render": "0.0.10", "@redwoodjs/mailer-core": "6.0.7" }, "devDependencies": { - "esbuild": "0.19.9", - "fast-glob": "3.3.2", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/project-config/build.js b/packages/project-config/build.js index 4560f1d78590..6db5ba7e0e40 100644 --- a/packages/project-config/build.js +++ b/packages/project-config/build.js @@ -1,28 +1,25 @@ -/* eslint-disable import/no-extraneous-dependencies */ - -import * as esbuild from 'esbuild' +import { build, defaultBuildOptions } from '../../buildDefaults.mjs' const options = { - entryPoints: ['./src/index.ts'], - outdir: 'dist', - - platform: 'node', - target: ['node20'], + ...defaultBuildOptions, bundle: true, + entryPoints: ['./src/index.ts'], packages: 'external', - - logLevel: 'info', - metafile: true, } -await esbuild.build({ - ...options, - format: 'esm', - outExtension: { '.js': '.mjs' }, +// ESM build. +await build({ + buildOptions: { + ...options, + format: 'esm', + outExtension: { '.js': '.mjs' }, + }, }) -await esbuild.build({ - ...options, - format: 'cjs', - outExtension: { '.js': '.cjs' }, +// CJS build. +await build({ + buildOptions: { + ...options, + outExtension: { '.js': '.cjs' }, + }, }) diff --git a/packages/project-config/package.json b/packages/project-config/package.json index 2c1e5f34767c..e6d3d8748126 100644 --- a/packages/project-config/package.json +++ b/packages/project-config/package.json @@ -33,7 +33,6 @@ "string-env-interpolation": "1.0.1" }, "devDependencies": { - "esbuild": "0.19.9", "rimraf": "5.0.5", "typescript": "5.3.3", "vitest": "1.2.1" diff --git a/packages/realtime/build.mjs b/packages/realtime/build.mjs index 2cec19a1a453..ff512ad9698a 100644 --- a/packages/realtime/build.mjs +++ b/packages/realtime/build.mjs @@ -1,22 +1,10 @@ -import fs from 'node:fs' - -import * as esbuild from 'esbuild' - -const result = await esbuild.build({ - entryPoints: ['src/index.ts'], - outdir: 'dist', - - bundle: true, - - platform: 'node', - target: ['node20'], - packages: 'external', - - logLevel: 'info', - - // For visualizing the bundle. - // See https://esbuild.github.io/api/#metafile and https://esbuild.github.io/analyze/. - metafile: true, +import { build, defaultBuildOptions } from '../../buildDefaults.mjs' + +await build({ + buildOptions: { + ...defaultBuildOptions, + bundle: true, + entryPoints: ['src/index.ts'], + packages: 'external', + }, }) - -fs.writeFileSync('meta.json', JSON.stringify(result.metafile)) diff --git a/packages/realtime/package.json b/packages/realtime/package.json index faad07152bd7..71727572f266 100644 --- a/packages/realtime/package.json +++ b/packages/realtime/package.json @@ -40,7 +40,6 @@ "@envelop/core": "5.0.0", "@envelop/testing": "6.0.3", "@envelop/types": "4.0.1", - "esbuild": "0.19.9", "jest": "29.7.0", "nodemon": "3.0.2", "typescript": "5.3.3" diff --git a/packages/record/package.json b/packages/record/package.json index ff135d97ff9d..69efd8aaaaed 100644 --- a/packages/record/package.json +++ b/packages/record/package.json @@ -22,11 +22,6 @@ "test": "vitest run src", "test:watch": "vitest watch src" }, - "jest": { - "testPathIgnorePatterns": [ - "/dist/" - ] - }, "dependencies": { "@babel/runtime-corejs3": "7.23.6", "@prisma/client": "5.7.0", diff --git a/packages/telemetry/package.json b/packages/telemetry/package.json index 6cb322e60c79..a834e77395a5 100644 --- a/packages/telemetry/package.json +++ b/packages/telemetry/package.json @@ -21,11 +21,6 @@ "test": "vitest run src", "test:watch": "vitest watch src" }, - "jest": { - "testPathIgnorePatterns": [ - "/dist/" - ] - }, "dependencies": { "@babel/runtime-corejs3": "7.23.6", "@redwoodjs/project-config": "6.0.7", diff --git a/packages/tui/build.mjs b/packages/tui/build.mjs index f572f24d1308..75e861b63346 100644 --- a/packages/tui/build.mjs +++ b/packages/tui/build.mjs @@ -1,19 +1,3 @@ -import fs from 'node:fs' +import { build } from '../../buildDefaults.mjs' -import * as esbuild from 'esbuild' - -// Since this is a library, there's no bundling going on here by design. -// Instead we plan for this library to be bundled by leaf packages so-to-speak like create-redwood-app. -const result = await esbuild.build({ - entryPoints: ['src/index.ts'], - format: 'cjs', - platform: 'node', - target: ['node20'], - outfile: 'dist/index.js', - - // For visualizing the bundle. - // See https://esbuild.github.io/api/#metafile and https://esbuild.github.io/analyze/. - metafile: true, -}) - -fs.writeFileSync('meta.json', JSON.stringify(result.metafile)) +await build() diff --git a/packages/tui/package.json b/packages/tui/package.json index f5be200fe3a1..9c47deab1214 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -19,11 +19,6 @@ "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", "prepublishOnly": "NODE_ENV=production yarn build" }, - "jest": { - "testPathIgnorePatterns": [ - "/dist/" - ] - }, "dependencies": { "boxen": "5.1.2", "chalk": "4.1.2", @@ -31,7 +26,6 @@ "stdout-update": "1.6.8" }, "devDependencies": { - "esbuild": "0.19.9", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/web-server/.babelrc.js b/packages/web-server/.babelrc.js deleted file mode 100644 index 3b2c815712d9..000000000000 --- a/packages/web-server/.babelrc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = { extends: '../../babel.config.js' } diff --git a/packages/web-server/build.mjs b/packages/web-server/build.mjs index 8fac87acabc5..75e861b63346 100644 --- a/packages/web-server/build.mjs +++ b/packages/web-server/build.mjs @@ -1,23 +1,3 @@ -import fs from 'node:fs' +import { build } from '../../buildDefaults.mjs' -import * as esbuild from 'esbuild' -import fg from 'fast-glob' - -const sourceFiles = fg.sync(['./src/**/*.ts'], { ignore: ['./src/__tests__'] }) - -const result = await esbuild.build({ - entryPoints: sourceFiles, - outdir: 'dist', - - format: 'cjs', - platform: 'node', - target: ['node20'], - - logLevel: 'info', - - // For visualizing dist. - // See https://esbuild.github.io/api/#metafile and https://esbuild.github.io/analyze/. - metafile: true, -}) - -fs.writeFileSync('meta.json', JSON.stringify(result.metafile, null, 2)) +await build() diff --git a/yarn.lock b/yarn.lock index a9628c17d8eb..e5dd5d6a7e32 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8059,7 +8059,6 @@ __metadata: babel-plugin-module-resolver: "npm:5.0.0" babel-plugin-tester: "npm:11.0.4" core-js: "npm:3.34.0" - esbuild: "npm:0.19.9" fast-glob: "npm:3.3.2" graphql: "npm:16.8.1" jest: "npm:29.7.0" @@ -8078,9 +8077,7 @@ __metadata: "@types/yargs": "npm:17.0.32" chalk: "npm:4.1.2" dotenv-defaults: "npm:5.0.2" - esbuild: "npm:0.19.9" execa: "npm:5.1.1" - fast-glob: "npm:3.3.2" fs-extra: "npm:11.2.0" jest: "npm:29.7.0" listr2: "npm:6.6.1" @@ -8132,10 +8129,7 @@ __metadata: "@storybook/react-webpack5": "npm:7.6.4" "@types/yargs": "npm:17.0.32" chalk: "npm:4.1.2" - esbuild: "npm:0.19.9" execa: "npm:5.1.1" - fast-glob: "npm:3.3.2" - jest: "npm:29.7.0" storybook: "npm:7.6.4" terminal-link: "npm:2.1.1" typescript: "npm:5.3.3" @@ -8258,9 +8252,6 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/context@workspace:packages/context" dependencies: - esbuild: "npm:0.19.9" - fast-glob: "npm:3.3.2" - jest: "npm:29.7.0" typescript: "npm:5.3.3" languageName: unknown linkType: soft @@ -8362,9 +8353,7 @@ __metadata: "@types/estree": "npm:1.0.5" "@typescript-eslint/parser": "npm:5.62.0" "@typescript-eslint/utils": "npm:5.62.0" - esbuild: "npm:0.19.9" eslint: "npm:8.55.0" - fast-glob: "npm:3.3.2" glob: "npm:10.3.10" tsx: "npm:4.6.2" typescript: "npm:5.3.3" @@ -8384,7 +8373,6 @@ __metadata: "@types/lodash": "npm:4.14.201" "@types/qs": "npm:6.9.11" ansi-colors: "npm:4.1.3" - esbuild: "npm:0.19.9" fast-glob: "npm:3.3.2" fastify: "npm:4.24.3" fastify-raw-body: "npm:4.3.0" @@ -8524,8 +8512,6 @@ __metadata: resolution: "@redwoodjs/mailer-core@workspace:packages/mailer/core" dependencies: "@redwoodjs/api": "npm:6.0.7" - esbuild: "npm:0.19.9" - fast-glob: "npm:3.3.2" typescript: "npm:5.3.3" vitest: "npm:1.2.1" languageName: unknown @@ -8536,8 +8522,6 @@ __metadata: resolution: "@redwoodjs/mailer-handler-in-memory@workspace:packages/mailer/handlers/in-memory" dependencies: "@redwoodjs/mailer-core": "npm:6.0.7" - esbuild: "npm:0.19.9" - fast-glob: "npm:3.3.2" typescript: "npm:5.3.3" languageName: unknown linkType: soft @@ -8548,8 +8532,6 @@ __metadata: dependencies: "@redwoodjs/mailer-core": "npm:6.0.7" "@types/nodemailer": "npm:^6" - esbuild: "npm:0.19.9" - fast-glob: "npm:3.3.2" nodemailer: "npm:6.9.7" typescript: "npm:5.3.3" languageName: unknown @@ -8560,8 +8542,6 @@ __metadata: resolution: "@redwoodjs/mailer-handler-resend@workspace:packages/mailer/handlers/resend" dependencies: "@redwoodjs/mailer-core": "npm:6.0.7" - esbuild: "npm:0.19.9" - fast-glob: "npm:3.3.2" resend: "npm:1.1.0" typescript: "npm:5.3.3" languageName: unknown @@ -8574,8 +8554,6 @@ __metadata: "@redwoodjs/mailer-core": "npm:6.0.7" "@redwoodjs/mailer-handler-nodemailer": "npm:6.0.7" "@types/nodemailer": "npm:^6" - esbuild: "npm:0.19.9" - fast-glob: "npm:3.3.2" typescript: "npm:5.3.3" languageName: unknown linkType: soft @@ -8587,8 +8565,6 @@ __metadata: "@faire/mjml-react": "npm:3.3.0" "@redwoodjs/mailer-core": "npm:6.0.7" "@types/mjml": "npm:4" - esbuild: "npm:0.19.9" - fast-glob: "npm:3.3.2" mjml: "npm:4.14.1" typescript: "npm:5.3.3" languageName: unknown @@ -8600,8 +8576,6 @@ __metadata: dependencies: "@react-email/render": "npm:0.0.10" "@redwoodjs/mailer-core": "npm:6.0.7" - esbuild: "npm:0.19.9" - fast-glob: "npm:3.3.2" typescript: "npm:5.3.3" languageName: unknown linkType: soft @@ -8641,7 +8615,6 @@ __metadata: dependencies: "@iarna/toml": "npm:2.2.5" deepmerge: "npm:4.3.1" - esbuild: "npm:0.19.9" fast-glob: "npm:3.3.2" rimraf: "npm:5.0.5" string-env-interpolation: "npm:1.0.1" @@ -8666,7 +8639,6 @@ __metadata: "@graphql-yoga/subscription": "npm:4.0.0" "@n1ru4l/graphql-live-query": "npm:0.10.0" "@n1ru4l/in-memory-live-query-store": "npm:0.10.0" - esbuild: "npm:0.19.9" graphql: "npm:16.8.1" ioredis: "npm:^5.3.2" jest: "npm:29.7.0" @@ -8826,7 +8798,6 @@ __metadata: boxen: "npm:5.1.2" chalk: "npm:4.1.2" enquirer: "npm:2.4.1" - esbuild: "npm:0.19.9" stdout-update: "npm:1.6.8" typescript: "npm:5.3.3" languageName: unknown @@ -15981,7 +15952,6 @@ __metadata: check-node-version: "npm:4.2.1" ci-info: "npm:4.0.0" envinfo: "npm:7.11.0" - esbuild: "npm:0.19.9" execa: "npm:5.1.1" fs-extra: "npm:11.2.0" jest: "npm:29.7.0"