UNPKG

uppy

Version:

Extensible JavaScript file upload widget with support for drag&drop, resumable uploads, previews, restrictions, file processing/encoding, remote providers like Instagram, Dropbox, Google Drive, S3 and more :dog:

94 lines (83 loc) 2.15 kB
#!/usr/bin/env node import fs from 'node:fs/promises' import chalk from 'chalk' import esbuild from 'esbuild' const UPPY_ROOT = new URL('../../', import.meta.url) const PACKAGES_ROOT = new URL('./packages/', UPPY_ROOT) function buildBundle( srcFile, bundleFile, { minify = true, standalone = '', plugins, target, format } = {}, ) { return esbuild .build({ bundle: true, sourcemap: true, entryPoints: [srcFile], outfile: bundleFile, platform: 'browser', minify, keepNames: target !== 'es5', plugins, tsconfigRaw: '{}', target, format, }) .then(() => { if (minify) { console.info( chalk.green(`✓ Built Minified Bundle [${standalone}]:`), chalk.magenta(bundleFile), ) } else { console.info( chalk.green(`✓ Built Bundle [${standalone}]:`), chalk.magenta(bundleFile), ) } }) } await fs.mkdir(new URL('./dist', import.meta.url), { recursive: true }) await fs.mkdir(new URL('./@uppy/locales/dist', PACKAGES_ROOT), { recursive: true, }) const locales = ( await fs.readdir(new URL('./@uppy/locales/lib', PACKAGES_ROOT)) ).flatMap((file) => { if (file.endsWith('.js')) { return [file.replace(/\.js$/, '')] } return [] }) const methods = [ buildBundle('./src/bundle.ts', './dist/uppy.min.mjs', { standalone: 'Uppy (ESM)', format: 'esm', }), buildBundle('./bundle.mjs', './dist/uppy.min.js', { standalone: 'Uppy', format: 'iife', }), ...locales.map((locale) => buildBundle( `../../packages/@uppy/locales/lib/${locale}.js`, `../../packages/@uppy/locales/dist/${locale}.min.js`, { standalone: `Uppy Locale ${locale}`, format: 'iife' }, ), ), ] // Add BUNDLE-README.MD methods.push( fs.copyFile( new URL('../../BUNDLE-README.md', import.meta.url), new URL('./dist/README.md', import.meta.url), ), ) await Promise.all(methods).then( () => { console.info(chalk.yellow('✓ JS bundles 🎉')) }, (err) => { console.error(chalk.red('✗ Error:'), chalk.red(err.message)) }, )