Skip to content

Commit 49090ed

Browse files
committed
chore(build): rename esbuild configs for clarity
Rename config files to shorter, consistent names: - esbuild.cli.build.mjs -> esbuild.cli.mjs - esbuild.config.mjs -> esbuild.build.mjs (orchestrator) - esbuild.index.config.mjs -> esbuild.index.mjs - esbuild-shared.mjs -> esbuild-utils.mjs Refactor esbuild-utils.mjs: - Replace createBuildRunner() with async runBuild() that properly rethrows errors (enables allSettled rejection detection) - Import esbuild statically instead of dynamically - Use logger instead of console Update all import paths in: - packages/cli/scripts/ (build.mjs, build-js.mjs, cover.mjs, etc.) - packages/package-builder/templates/ (cli-package, cli-sentry-package) - docs/build-guide.md - packages/build-infra/README.md
1 parent b5479b0 commit 49090ed

28 files changed

+427
-874
lines changed

docs/build-guide.md

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -284,23 +284,25 @@ pnpm clean
284284

285285
Located in `packages/cli/.config/`:
286286

287-
| Config | Output | Description |
288-
| -------------------------- | --------------- | ------------------ |
289-
| `esbuild.cli.build.mjs` | `build/cli.js` | Main CLI bundle |
290-
| `esbuild.index.config.mjs` | `dist/index.js` | Entry point loader |
287+
| Config | Output | Description |
288+
| -------------------- | --------------- | ------------------------------------------------ |
289+
| `esbuild.cli.mjs` | `build/cli.js` | Main CLI bundle — bundles all source into one JS |
290+
| `esbuild.index.mjs` | `dist/index.js` | Entry point loader — thin shim that loads cli.js |
291+
| `esbuild.build.mjs` | (orchestrator) | Runs both cli and index builds in parallel |
291292

292293
### Build Variants
293294

294-
The unified esbuild config (`esbuild.config.mjs`) orchestrates all variants:
295+
The orchestrator (`esbuild.build.mjs`) accepts an optional variant argument:
295296

296297
```bash
297-
# Build all variants
298-
node .config/esbuild.config.mjs all
298+
# Build all variants (default)
299+
node .config/esbuild.build.mjs
299300

300-
# Build specific variant
301-
node .config/esbuild.config.mjs cli
302-
node .config/esbuild.config.mjs index
303-
node .config/esbuild.config.mjs inject
301+
# Build only the CLI bundle
302+
node .config/esbuild.build.mjs cli
303+
304+
# Build only the entry point loader
305+
node .config/esbuild.build.mjs index
304306
```
305307

306308
---

packages/build-infra/README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ ensureOutputDir('/path/to/output/file.js')
296296
### esbuild Configuration
297297

298298
```javascript
299-
// .config/esbuild.config.mjs
299+
// .config/esbuild.cli.mjs
300300
import { IMPORT_META_URL_BANNER } from 'build-infra/lib/esbuild-helpers'
301301
import { unicodeTransformPlugin } from 'build-infra/lib/esbuild-plugin-unicode-transform'
302302
import { deadCodeEliminationPlugin } from 'build-infra/lib/esbuild-plugin-dead-code-elimination'
@@ -438,8 +438,7 @@ Assets are cached per tag to avoid re-downloading across builds.
438438

439439
**Consumers:**
440440

441-
- `packages/cli/.config/esbuild.cli.build.mjs` - Main CLI bundle config
442-
- `packages/cli/.config/esbuild.inject.config.mjs` - Shadow npm inject config
441+
- `packages/cli/.config/esbuild.cli.mjs` - Main CLI bundle config
443442
- `packages/cli/scripts/download-assets.mjs` - Unified asset downloader
444443
- `packages/cli/scripts/sea-build-utils/builder.mjs` - SEA binary builder
445444

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/**
2+
* esbuild build orchestrator for Socket CLI.
3+
* Builds all variants (CLI bundle + entry point) in parallel.
4+
*
5+
* Usage:
6+
* node .config/esbuild.build.mjs # Build all variants
7+
* node .config/esbuild.build.mjs cli # Build CLI bundle
8+
* node .config/esbuild.build.mjs index # Build entry point
9+
*/
10+
11+
import { fileURLToPath } from 'node:url'
12+
13+
import { getDefaultLogger } from '@socketsecurity/lib/logger'
14+
15+
import { runBuild } from '../scripts/esbuild-utils.mjs'
16+
import cliConfig from './esbuild.cli.mjs'
17+
import indexConfig from './esbuild.index.mjs'
18+
19+
const logger = getDefaultLogger()
20+
21+
export const CONFIGS = {
22+
__proto__: null,
23+
cli: cliConfig,
24+
index: indexConfig,
25+
}
26+
27+
async function main() {
28+
const variant = process.argv[2] || 'all'
29+
30+
if (variant !== 'all' && !(variant in CONFIGS)) {
31+
logger.error(`Unknown variant: ${variant}`)
32+
logger.error(`Available variants: all, ${Object.keys(CONFIGS).join(', ')}`)
33+
process.exitCode = 1
34+
return
35+
}
36+
37+
const targets =
38+
variant === 'all'
39+
? Object.entries(CONFIGS)
40+
: [[variant, CONFIGS[variant]]]
41+
42+
const results = await Promise.allSettled(
43+
targets.map(({ 0: name, 1: config }) => runBuild(config, name)),
44+
)
45+
const failed = results.filter(r => r.status === 'rejected')
46+
if (failed.length > 0) {
47+
process.exitCode = 1
48+
}
49+
}
50+
51+
if (fileURLToPath(import.meta.url) === process.argv[1]) {
52+
main().catch(error => {
53+
logger.error('Build failed:', error)
54+
process.exitCode = 1
55+
})
56+
}
57+
58+
export default CONFIGS

0 commit comments

Comments
 (0)