]> git.codecow.com Git - libnemo.git/commitdiff
Separate esbuild config from build scripts.
authorChris Duncan <chris@zoso.dev>
Mon, 15 Sep 2025 21:04:02 +0000 (14:04 -0700)
committerChris Duncan <chris@zoso.dev>
Mon, 15 Sep 2025 21:04:02 +0000 (14:04 -0700)
esbuild/build-dev.mjs
esbuild/build-prod.mjs
esbuild/config.mjs [new file with mode: 0644]

index 9e1ace01fab83bec376d7488294473589c2b680d..1091bc1fc6392a7c4d5b8645759b8f09e90e3d40 100644 (file)
@@ -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)
index cfd5e5e960b6842e5ae1c088af94f82ddea3a299..444cf2c2c59749dd047cba736439b890585389bb 100644 (file)
@@ -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 (file)
index 0000000..7dc43fe
--- /dev/null
@@ -0,0 +1,61 @@
+//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
+//! 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']
+}