feat: Refactor project structure to export initialize, prepare, and zip functions (#182)

This commit is contained in:
Aaron
2023-10-29 21:19:31 -05:00
committed by GitHub
parent 2e24b9e18a
commit e37f73880d
119 changed files with 969 additions and 1091 deletions
+73 -61
View File
@@ -1,12 +1,15 @@
import tsup from 'tsup';
import glob from 'fast-glob';
import { printFileList } from '../src/core/log/printFileList';
import { formatDuration } from '../src/core/utils/formatDuration';
import { printFileList } from '~/core/utils/log';
import { formatDuration } from '~/core/utils/time';
import ora from 'ora';
import fs from 'fs-extra';
import { consola } from 'consola';
import pMap from 'p-map';
import os from 'node:os';
const spinner = ora('Building WXT').start();
const spinnerText = 'Building WXT';
const spinner = ora(spinnerText).start();
const startTime = Date.now();
const outDir = 'dist';
@@ -14,83 +17,92 @@ const virtualEntrypoints = ['background', 'content-script', 'unlisted-script'];
await fs.rm(outDir, { recursive: true, force: true });
await Promise.all([
tsup.build({
entry: {
index: 'src/index.ts',
const baseConfig: tsup.Options = {
format: ['cjs', 'esm'],
sourcemap: true,
dts: true,
silent: true,
external: ['vite'],
};
function spinnerPMap(configs: tsup.Options[]) {
let completed = 0;
const updateSpinner = () => {
spinner.text = `${spinnerText} [${completed}/${configs.length}]`;
};
updateSpinner();
return pMap(
config,
async (config) => {
const res = await tsup.build(config);
completed++;
updateSpinner();
return res;
},
format: ['cjs', 'esm'],
sourcemap: true,
dts: true,
silent: true,
external: ['vite'],
}),
tsup.build({
entry: { cli: 'src/cli/index.ts' },
{
stopOnError: true,
concurrency: process.env.CI === 'true' ? os.cpus().length : Infinity,
},
);
}
const config: tsup.Options[] = [
{
...baseConfig,
entry: { index: 'src/index.ts' },
},
{
...baseConfig,
entry: { cli: 'src/cli.ts' },
format: ['cjs'],
sourcemap: 'inline',
silent: true,
external: ['vite'],
}),
tsup.build({
},
{
...baseConfig,
entry: { client: 'src/client/index.ts' },
format: ['esm'],
sourcemap: 'inline',
dts: true,
silent: true,
external: ['vite'],
}),
tsup.build({
entry: { browser: 'src/client/browser.ts' },
},
{
...baseConfig,
entry: { browser: 'src/browser.ts' },
format: ['esm'],
sourcemap: 'inline',
dts: true,
silent: true,
external: ['vite'],
}),
tsup.build({
entry: { sandbox: 'src/client/sandbox/index.ts' },
},
{
...baseConfig,
entry: { sandbox: 'src/sandbox/index.ts' },
format: ['esm'],
sourcemap: 'inline',
dts: true,
silent: true,
}),
tsup.build({
},
{
...baseConfig,
entry: { testing: 'src/testing/index.ts' },
format: ['esm', 'cjs'],
sourcemap: 'inline',
dts: true,
silent: true,
}),
...virtualEntrypoints.map((entryName) =>
tsup.build({
},
...virtualEntrypoints.map(
(entryName): tsup.Options => ({
...baseConfig,
entry: {
[`virtual-modules/${entryName}-entrypoint`]: `src/client/virtual-modules/${entryName}-entrypoint.ts`,
[`virtual/${entryName}-entrypoint`]: `src/virtual/${entryName}-entrypoint.ts`,
},
format: ['esm'],
sourcemap: true,
silent: true,
external: [`virtual:user-${entryName}`, 'vite'],
}),
),
tsup.build({
{
...baseConfig,
entry: {
'virtual-modules/reload-html': `src/client/virtual-modules/reload-html.ts`,
'virtual/reload-html': `src/virtual/reload-html.ts`,
},
format: ['esm'],
sourcemap: true,
silent: true,
external: ['vite'],
}),
tsup.build({
},
{
...baseConfig,
entry: {
'virtual-modules/fake-browser': `src/client/virtual-modules/fake-browser.ts`,
'virtual/mock-browser': `src/virtual/mock-browser.ts`,
},
format: ['esm', 'cjs'],
silent: true,
external: ['vite'],
}),
]).catch((err) => {
},
];
await spinnerPMap(config).catch((err) => {
spinner.fail();
console.error(err);
process.exit(1);