/* This script will build the package with esbuild */ const esbuild = require('esbuild') const pkg = require('./package.json') // Create banner based on package info const banner = `/** * ${pkg.name} | v${pkg.version} * ${pkg.description} * (c) ${new Date().getFullYear()} ${pkg.author} * @license ${pkg.license} */` // Shared esbuild options const options = { banner: { js: banner }, bundle: true, entryPoints: ['src/index.js'], external: ["@freesewing"], metafile: process.env.VERBOSE ? true : false, minify: process.env.NO_MINIFY ? false : true, sourcemap: true, } // Different formats const formats = { cjs: "dist/index.js", esm: "dist/index.mjs", } // Let esbuild generate different formats let result (async () => { for (const [format, outfile] of Object.entries(formats)) { result = await esbuild .build({ ...options, outfile, format }) .catch(() => process.exit(1)) } if (process.env.VERBOSE) { const info = await esbuild.analyzeMetafile(result.metafile) console.log(info) } // Also build a version that has all dependencies bundled // This makes it easy to run tests await esbuild .build({ ...options, minify: false, sourcemap: false, outfile: 'tests/dist/index.mjs', format: 'esm', external: [], }) .catch(() => process.exit(1)) })()