lafkpages / XL-Replit

Extra features for the Replit website.
https://xl-replit.lafkpages.tech
17 stars 8 forks source link

build for all instead of erroring #45

Open github-actions[bot] opened 1 year ago

github-actions[bot] commented 1 year ago

https://api.github.com/lafkpages/XL-Replit/blob/3a05cd745096843d49f71b2a0cba70fd1ac5f3df/scripts/build.mjs#L12


#!/usr/bin/env zx

const args = argv._;
if (args[0] == path.basename(__filename)) {
  args.shift();
}

const browser = argv.browser || args[1];
let esbuildTarget = '';

// If no browser specified
// TODO: build for all instead of erroring
if (!browser) {
  echo('No browser specified');
  exit(1);
}

switch (browser) {
  case 'chrome':
    echo('Building for Chrome');
    esbuildTarget = 'chrome58';
    break;

  case 'firefox':
    echo('Building for Firefox');
    esbuildTarget = 'firefox57';
    break;

  default:
    echo('Unrecognized browser: $browser');
    exit(1);
    break;
}

let isDev = false;
let NODE_ENV = 'production';
if (argv.dev || argv._[0] == 'dev') {
  isDev = true;
  NODE_ENV = 'dev';
}

// Remove old builds
await fs.emptyDir('dist');

// Copy manifest
const manifest = await fs.readJson(`src/manifests/${browser}.json`);
delete manifest['$schema'];
await fs.writeJson(`dist/manifest.json`, manifest);

// Copy localization files
await fs.copy(`src/locales`, `dist/_locales`);

// Copy public files
await fs.copy('public', 'dist/public');

// Copy HTML, CSS and net rules
for (const folder of ['html', 'css', 'net-rules']) {
  await fs.copy(`src/${folder}`, `dist/${folder}`);
}

// Copy Monaco editor from Node modules
const monacoMode = isDev ? 'dev' : 'min';
await fs.copy(`node_modules/monaco-editor/${monacoMode}/vs`, 'dist/public/vs');

// Copy RequireJS lib
await fs.copy('node_modules/requirejs/require.js', 'dist/public/require.js');

// ESBuild options
let opts = ['--bundle', '--minify', `--target=${esbuildTarget}`];
if (isDev) {
  // Enable sourcemaps and watch in development
  opts.push('--sourcemap' /*, '--watch'*/);

  // Watch temporarily disabled due to multiple esbuild commands
} else {
}

// Build TypeScript files into JavaScript
await $`./node_modules/.bin/esbuild src/inject.ts --outdir=dist ${opts} --global-name=xlReplit`;
await $`./node_modules/.bin/esbuild src/{background,popup,content,ot}.ts --outdir=dist ${opts}`;