From: Chris Duncan Date: Mon, 15 Sep 2025 21:04:02 +0000 (-0700) Subject: Separate esbuild config from build scripts. X-Git-Tag: v0.10.5~14^2~12 X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=ac161f96e58a5f55dc90a685d64cf96ec712055c;p=libnemo.git Separate esbuild config from build scripts. --- diff --git a/esbuild/build-dev.mjs b/esbuild/build-dev.mjs index 9e1ace0..1091bc1 100644 --- a/esbuild/build-dev.mjs +++ b/esbuild/build-dev.mjs @@ -2,65 +2,8 @@ //! SPDX-License-Identifier: GPL-3.0-or-later import { build } from 'esbuild' +import { browserOptions, iifeOptions, nodeOptions } from './config.mjs' -/** -* @type {import('esbuild').BuildOptions} -*/ -const sharedOptions = { - bundle: true, - minify: false, - sourcemap: 'both', - platform: 'browser', - loader: { - '.d.ts': 'copy' - }, - legalComments: 'inline', - outdir: 'dist', - target: 'esnext' -} - -/** -* @type {import('esbuild').BuildOptions} -*/ -export const iifeOptions = { - ...sharedOptions, - format: 'iife', - globalName: 'libnemo', - entryPoints: [ - { in: './src/main.ts', out: 'global.min' }, - { in: './src/types.d.ts', out: 'types.d' } - ], - dropLabels: ['NODE'], - inject: ['./polyfill/buffer.mjs'] -} -await build(iifeOptions) - -/** -* @type {import('esbuild').BuildOptions} -*/ -export const browserOptions = { - ...sharedOptions, - format: 'esm', - entryPoints: [ - { in: './src/main.ts', out: 'browser.min' }, - { in: './src/types.d.ts', out: 'types.d' } - ], - dropLabels: ['NODE'], - inject: ['./polyfill/buffer.mjs'] -} await build(browserOptions) - -/** -* @type {import('esbuild').BuildOptions} -*/ -export const nodeOptions = { - ...sharedOptions, - format: 'esm', - entryPoints: [ - { in: './src/main.ts', out: 'nodejs.min' } - ], - dropLabels: ['BROWSER'], - external: ['node:worker_threads'], - inject: ['./polyfill/fake-indexeddb.mjs'] -} +await build(iifeOptions) await build(nodeOptions) diff --git a/esbuild/build-prod.mjs b/esbuild/build-prod.mjs index cfd5e5e..444cf2c 100644 --- a/esbuild/build-prod.mjs +++ b/esbuild/build-prod.mjs @@ -2,14 +2,11 @@ //! SPDX-License-Identifier: GPL-3.0-or-later import { build } from 'esbuild' -import { browserOptions, nodeOptions } from './build-dev.mjs' +import { browserOptions, nodeOptions } from './config.mjs' browserOptions.drop = nodeOptions.drop = ['console', 'debugger'] browserOptions.minify = nodeOptions.minify = true browserOptions.sourcemap = nodeOptions.sourcemap = false -// Browser build await build(browserOptions) - -// Node build await build(nodeOptions) diff --git a/esbuild/config.mjs b/esbuild/config.mjs new file mode 100644 index 0000000..7dc43fe --- /dev/null +++ b/esbuild/config.mjs @@ -0,0 +1,61 @@ +//! SPDX-FileCopyrightText: 2025 Chris Duncan +//! SPDX-License-Identifier: GPL-3.0-or-later + +/** +* @type {import('esbuild').BuildOptions} +*/ +const sharedOptions = { + bundle: true, + minify: false, + sourcemap: 'both', + platform: 'browser', + loader: { + '.d.ts': 'copy' + }, + legalComments: 'inline', + outdir: 'dist', + target: 'esnext' +} + +/** +* @type {import('esbuild').BuildOptions} +*/ +export const browserOptions = { + ...sharedOptions, + format: 'esm', + entryPoints: [ + { in: './src/main.ts', out: 'browser.min' }, + { in: './src/types.d.ts', out: 'types.d' } + ], + dropLabels: ['NODE'], + inject: ['./polyfill/buffer.mjs'] +} + +/** +* @type {import('esbuild').BuildOptions} +*/ +export const iifeOptions = { + ...sharedOptions, + format: 'iife', + globalName: 'libnemo', + entryPoints: [ + { in: './src/main.ts', out: 'global.min' }, + { in: './src/types.d.ts', out: 'types.d' } + ], + dropLabels: ['NODE'], + inject: ['./polyfill/buffer.mjs'] +} + +/** +* @type {import('esbuild').BuildOptions} +*/ +export const nodeOptions = { + ...sharedOptions, + format: 'esm', + entryPoints: [ + { in: './src/main.ts', out: 'nodejs.min' } + ], + dropLabels: ['BROWSER'], + external: ['node:worker_threads'], + inject: ['./polyfill/fake-indexeddb.mjs'] +}