123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #!/usr/bin/env node
- import fs from 'node:fs/promises'
- import path from 'node:path'
- import chalk from 'chalk'
- import esbuild from 'esbuild'
- import babel from 'esbuild-plugin-babel'
- 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: true,
- plugins,
- 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('./uppy/dist', PACKAGES_ROOT), { recursive: true })
- await fs.mkdir(new URL('./@uppy/robodog/dist', PACKAGES_ROOT), { recursive: true })
- await fs.mkdir(new URL('./@uppy/locales/dist', PACKAGES_ROOT), { recursive: true })
- const methods = [
- buildBundle(
- './packages/uppy/index.mjs',
- './packages/uppy/dist/uppy.min.mjs',
- { standalone: 'Uppy (ESM)', format: 'esm' },
- ),
- buildBundle(
- './packages/uppy/bundle.mjs',
- './packages/uppy/dist/uppy.min.js',
- { standalone: 'Uppy', format: 'iife' },
- ),
- buildBundle(
- './packages/uppy/bundle-legacy.mjs',
- './packages/uppy/dist/uppy.legacy.min.js',
- {
- standalone: 'Uppy (with polyfills)',
- target: 'es5',
- plugins:[babel({
- config:{
- compact: false,
- highlightCode: false,
- inputSourceMap: true,
- browserslistEnv: 'legacy',
- presets: [['@babel/preset-env', {
- loose: false,
- targets: { ie:11 },
- useBuiltIns: 'entry',
- corejs: { version: '3.24', proposals: true },
- }]],
- },
- })],
- },
- ),
- buildBundle(
- './packages/@uppy/robodog/bundle.js',
- './packages/@uppy/robodog/dist/robodog.min.js',
- { standalone: 'Robodog' },
- ),
- ]
- // Build minified versions of all the locales
- const localesModules = await fs.opendir(new URL('./@uppy/locales/src/', PACKAGES_ROOT))
- for await (const dirent of localesModules) {
- if (!dirent.isDirectory() && dirent.name.endsWith('.js')) {
- const localeName = path.basename(dirent.name, '.js')
- methods.push(
- buildBundle(
- `./packages/@uppy/locales/src/${localeName}.js`,
- `./packages/@uppy/locales/dist/${localeName}.min.js`,
- { minify: true },
- ),
- )
- }
- }
- // Add BUNDLE-README.MD
- methods.push(
- fs.copyFile(
- new URL('./BUNDLE-README.md', UPPY_ROOT),
- new URL('./uppy/dist/README.md', PACKAGES_ROOT),
- ),
- )
- await Promise.all(methods).then(() => {
- console.info(chalk.yellow('✓ JS bundles 🎉'))
- }, (err) => {
- console.error(chalk.red('✗ Error:'), chalk.red(err.message))
- })
|