Files
2026-07-13 13:34:48 +08:00

49 lines
1.1 KiB
TypeScript

import esbuild from 'esbuild'
import { polyfillNode } from 'esbuild-plugin-polyfill-node'
import { dependencies } from './package.json'
const external = Object.keys(dependencies)
const entryPoint = './src/index.ts'
const buildNode = async () =>
esbuild.build({
entryPoints: [entryPoint],
bundle: true,
platform: 'node',
format: 'cjs',
external,
outfile: './dist/index.cjs',
sourcemap: true,
})
const buildBrowser = async () =>
esbuild.build({
entryPoints: [entryPoint],
bundle: true,
platform: 'browser',
format: 'esm',
outfile: './dist/index.mjs',
sourcemap: true,
plugins: [polyfillNode({ polyfills: { crypto: true } })],
})
const main = async (argv: string[]) => {
if (argv.includes('--node')) {
return buildNode()
}
if (argv.includes('--browser')) {
return buildBrowser()
}
throw new Error('Please specify --node, --browser, or --bundle')
}
void main(process.argv.slice(2))
.then(() => {
console.info('Done')
process.exit(0)
})
.catch((error) => {
console.error(error)
process.exit(1)
})