ray/scripts/build.js
2024-06-23 23:04:53 +02:00

87 lines
2.3 KiB
JavaScript

const path = require('node:path');
const glob = require('fast-glob');
const ts = require('typescript');
const esbuild = require('esbuild');
const fs = require('node:fs');
const { generateDtsBundle } = require('dts-bundle-generator');
const _ = async () => {
const sourcePath = path.resolve(__dirname, "../", "src")
const entryPoints = glob.sync(path.resolve(sourcePath, "**", "**.ts").replace(/\\/g, '/'));
const outdir = path.join(__dirname, "../", 'build');
if (!fs.existsSync(outdir)) {
fs.mkdirSync(outdir);
}
console.log("Generating .cjs files");
esbuild.build({
entryPoints: ['./src/index.ts'],
outfile: outdir + '/aleksray.cjs',
format: "cjs",
sourcemap: "external",
platform: "node",
outExtension: { '.js': '.cjs', },
bundle: true,
external: ['@permafrost-dev/pretty-format', 'p-queue', 'stacktrace-js']
});
esbuild.build({
entryPoints: ['./src/index.ts'],
outfile: outdir + '/standalone-aleksray-bundle.cjs',
format: "cjs",
sourcemap: "external",
platform: "node",
outExtension: { '.js': '.cjs', },
bundle: true,
// external: ['@permafrost-dev/pretty-format', 'p-queue', 'stacktrace-js']
});
console.log("Generating .mjs files");
esbuild.build({
entryPoints: ['./src/index.ts'],
outfile: outdir + '/aleksray.mjs',
format: "esm",
sourcemap: "external",
platform: "node",
outExtension: { '.js': '.mjs', },
bundle: true,
external: ['@permafrost-dev/pretty-format', 'p-queue', 'stacktrace-js']
});
esbuild.build({
entryPoints: ['./src/index.ts'],
outfile: outdir + '/standalone-aleksray-bundle.mjs',
format: "esm",
sourcemap: "external",
platform: "node",
outExtension: { '.js': '.mjs', },
bundle: true,
// external: ['@permafrost-dev/pretty-format', 'p-queue', 'stacktrace-js']
});
console.log("Generating .d.ts files");
const dts = generateDtsBundle([{ filePath: sourcePath + '/index.ts' }])
.pop()
.replaceAll('export {};', '')
.replaceAll(/\n{2,}/g, '\n')
.replaceAll(/\t/g, ' ')
.trim();
fs.writeFileSync(outdir + '/aleksray.d.ts', dts, 'utf8');
}
_();